Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Modificare un vincolo CHECK in SQL Server utilizzando T-SQL

Se hai già un CHECK esistente vincolo in SQL Server, ma è necessario modificarlo, sarà necessario eliminarlo e ricrearlo. Non esiste ALTER CONSTRAINT dichiarazione o qualcosa di simile.

Quindi per “modificare” un vincolo esistente:

  1. Rilascia il vincolo usando ALTER TABLE con DROP CONSTRAINT .
  2. Crea il nuovo vincolo usando ALTER TABLE con ADD CONSTRAINT .

Esempio

Ecco un esempio di eliminazione e ricreazione di un CHECK vincolo.

ALTER TABLE ConstraintTest 
  DROP CONSTRAINT chkTeamSize;

ALTER TABLE ConstraintTest
  ADD CONSTRAINT chkTeamSize 
  CHECK (TeamSize >= 5 AND TeamSize <= 20)
  ;

Come accennato, non puoi modificarlo:devi rilasciarlo e crearlo con la nuova definizione.

In questo caso, il vincolo è chiamato chkTeamSize e lo lascio semplicemente cadere e lo creo con la nuova definizione.

Una nota sull'ordinazione

Nota che CHECK i vincoli vengono convalidati nell'ordine in cui sono stati creati, quindi l'eliminazione/ricreazione di un vincolo può comportarne la convalida in un ordine diverso rispetto a prima. Ciò potrebbe comportare la cattura di altri errori prima di questo vincolo, quando erano stati rilevati in precedenza dopo.