Creazione e modifica di vincoli CHECK
Data aggiornamento: 17 luglio 2006
È possibile creare un vincolo CHECK come parte della definizione della tabella quando si crea una tabella. Se la tabella esiste già, è possibile aggiungere un vincolo CHECK. Tabelle e colonne possono includere più vincoli CHECK.
Se è già presente un vincolo CHECK, è possibile modificarlo o eliminarlo. È possibile, ad esempio, modificare l'espressione utilizzata dal vincolo CHECK in una colonna della tabella.
[!NOTA] Per modificare un vincolo CHECK, è innanzitutto necessario eliminare il vincolo CHECK esistente e quindi crearlo di nuovo con la nuova definizione.
Nell'esempio di Transact-SQL seguente viene creata una nuova tabella, che viene quindi modificata tramite l'aggiunta di un vincolo CHECK
alla colonna CreditRating
.
IF OBJECT_ID ('dbo.Vendors', 'U') IS NOT NULL
DROP TABLE dbo.Vendors;
GO
CREATE TABLE dbo.Vendors
(VendorID int PRIMARY KEY, VendorName nvarchar (50),
CreditRating tinyint)
GO
ALTER TABLE dbo.Vendors ADD CONSTRAINT CK_Vendor_CreditRating
CHECK (CreditRating >= 1 AND CreditRating <= 5)
Eliminare un vincolo CHECK per rimuovere i limiti su valori di dati validi in una o più colonne incluse nell'espressione di vincolo.
Per creare un vincolo CHECK in fase di creazione di una tabella
Per creare un vincolo CHECK in una tabella esistente
- ALTER TABLE (Transact-SQL)
- Procedura: Collegamento di un nuovo vincolo CHECK a una tabella o a una colonna (Visual Database Tools)
Per eliminare un vincolo CHECK
Applicazione di un vincolo CHECK tramite WITH NOCHECK
Quando un vincolo CHECK viene aggiunto a una tabella esistente, può essere applicato solo ai nuovi dati oppure ai dati esistenti. Per impostazione predefinita, il vincolo CHECK viene applicato sia ai dati esistenti che a quelli nuovi. Utilizzare l'opzione WITH NOCHECK dell'istruzione ALTER TABLE per applicare il nuovo vincolo solo ai nuovi dati aggiunti. Questa opzione risulta utile quando i dati esistenti soddisfano già il nuovo vincolo CHECK o quando una regola business richiede l'imposizione del vincolo soltanto a partire da un determinato momento.
È possibile, ad esempio, che un vincolo precedente richieda che i codici postali siano limitati a cinque cifre e che un nuovo vincolo richieda codici postali a nove cifre. I dati precedenti con codici postali a cinque cifre sono ancora validi e coesistono con i nuovi dati che contengono codici postali a nove cifre. Pertanto, è necessario controllare soltanto i nuovi dati in base al nuovo vincolo.
Tuttavia, è opportuno prestare attenzione quando si aggiunge un vincolo senza controllare i dati esistenti perché in questo modo non vengono eseguite in Motore di database di SQL Server 2005 le verifiche che garantiscono l'integrità delle regole per la tabella.
Per impedire il controllo dei dati esistenti quando si crea un vincolo CHECK
- ALTER TABLE (Transact-SQL)
- Procedura: Controllo dei dati esistenti durante la creazione di un vincolo CHECK (Visual Database Tools)
Disattivazione di vincoli CHECK
È possibile disattivare i vincoli CHECK esistenti per operazioni specifiche, ad esempio operazioni INSERT o UPDATE ed elaborazioni delle repliche.
- Istruzioni INSERT e UPDATE
Disattivando un vincolo CHECK si consente la modifica dei dati nella tabella senza che ne venga eseguita la convalida tramite i vincoli. Disattivare un vincolo CHECK durante l'esecuzione delle istruzioni INSERT e UPDATE se i nuovi dati violeranno il vincolo o se il vincolo deve essere applicato soltanto ai dati già presenti nel database. - Elaborazione di repliche
Disattivare un vincolo CHECK durante la replica se il vincolo è specifico del database di origine. Quando una tabella viene replicata, la definizione e i dati della tabella vengono copiati dal database di origine al database di destinazione. Questi due database si trovano in genere, ma non necessariamente, in server distinti. Se i vincoli CHECK specifici del database di origine non vengono disattivati, potrebbero impedire inopportunamente l'immissione di nuovi dati nel database di destinazione. Per ulteriori informazioni, vedere Controllo di vincoli, identità e trigger con l'opzione NOT FOR REPLICATION.
Per disattivare un vincolo CHECK per le istruzioni INSERT e UPDATE
- ALTER TABLE (Transact-SQL)
- Procedura: Disattivazione dei vincoli CHECK con le istruzioni INSERT e UPDATE (Visual Database Tools)
Per disattivare un vincolo CHECK per la replica
- ALTER TABLE (Transact-SQL)
- Procedura: Disattivazione di vincoli CHECK per la replica (Visual Database Tools)
Per ottenere informazioni sui vincoli CHECK
Vedere anche
Concetti
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
17 luglio 2006 |
|