SQL Server Check Vincolo

SQL Server Check Vincolo

Un vincolo si riferisce a una regola che definisce come vengono applicati i dati in una determinata colonna. Un vincolo può eseguire azioni come la prevenzione dell'inserimento di valori nulli, prevenendo l'inserimento di valori duplicati e altro ancora.

In questo articolo, esploreremo uno dei vincoli pratici nel server SQL chiamato CONTROLLE VINCIPLE. Un vincolo di controllo viene utilizzato principalmente per garantire l'integrità dei dati in una determinata colonna.

Utilizzando un vincolo di controllo, è possibile garantire che i dati aggiunti a una determinata colonna valutino costantemente a un determinato valore booleano. Ad esempio, è possibile aggiungere un vincolo di controllo che garantisce che solo i valori oltre una data specifica vengano aggiunti a quella colonna.

Discutiamo ulteriormente questo.

SQL Server Check Vincolo

Esistono due modi per aggiungere un vincolo di controllo a una colonna della tabella:

  1. Durante la creazione di tavoli
  2. Usando il comando della tabella Alter nella tabella esistente

È sempre una pratica eccellente aggiungere un vincolo durante la creazione di tavoli. Ciò garantisce che la regola sia applicata a tutti i dati in quella colonna.

Per illustrare, prendi la definizione della tabella che è mostrata di seguito:

Crea utenti di tabelle (
Id Int Identity Key primario,
nome utente varchar (100) non null,
Controllo della data di iscrizione_date (iscrizione> '2022-01-01')
);

Nella tabella di esempio indicata, abbiamo creato tre colonne, ognuna con il suo tipo e valori di dati univoci. Tuttavia, nella colonna iscrizione_date, impostiamo il vincolo di controllo che verifica che qualsiasi valore di data aggiunto a quella colonna è maggiore di 2022-01-01.

Iniziamo chiamando la parola chiave di controllo seguita dall'espressione booleana che desideriamo applicare a quella colonna.

È inoltre possibile impostare un nome per il vincolo utilizzando la parola chiave del vincolo. Un esempio è il seguente:

Crea utenti di tabelle (
Id Int Identity Key primario,
nome utente varchar (100) non null,
Vincolo della data di iscrizione_date Verify_Date Controllo (iscrizione_date> '2022-01-01')
);

In questo caso, assegniamo il nome che è il "verifica_date" al vincolo creato. Nominare un vincolo può semplificare la vita quando è necessario rimuovere o aggiornare i parametri di vincolo.

NOTA: Non puoi avere vincoli senza nome nel tuo database. Quindi, se non viene fornito alcun nome, il server SQL genera automaticamente un nome per il tuo vincolo.

Una volta definito un vincolo, possiamo aggiungere i dati come mostrato nel seguente:

inserire
in
utenti (nome utente,
iscrizione_date)
valori ('utente1',
'2022-01-02');

Potresti notare che la precedente istruzione insert aderisce alle regole di vincolo nella colonna Enroll_date.

Tuttavia, se violamo le regole di tale vincolo, il server SQL restituisce un errore come illustrato nel seguente:

inserire
in
utenti (nome utente,
iscrizione_date)
valori ('user2', '2021-12-31');

Produzione:

Errore SQL [547] [23000]: l'istruzione insert in conflitto con il vincolo di controllo "Verify_date". Il conflitto si è verificato nel database "resolver", tabella "DBO.utenti ", colonna 'iscrizione_date'.

Come puoi vedere, il server SQL ti avvisa della violazione del vincolo da parte dell'istruzione insert.

Modificare un vincolo esistente

Per modificare la definizione di un vincolo esistente mediante Transact-SQL, è necessario eliminare il vincolo e ricrearlo con le nuove definizioni.

Aggiunta di un vincolo di controllo a una tabella esistente

Per aggiungere un vincolo di controllo a una tabella esistente, si utilizza la sintassi fornita nel seguente:

Alter table table_name
Aggiungi vincolo vincolante_name check (vincolo_definizione);

Rimozione di un vincolo di assegno

Per rimuovere un vincolo di controllo, è possibile utilizzare il comando ALTER Tabella come mostrato nel seguente:

Alter table table_name
Drop vintrint vincolante_name;

Disabilitare un vincolo

È possibile saltare le regole del vincolo senza abbandonare il vincolo disabilitandolo. Di seguito mostra la sintassi per disabilitare un vincolo:

Alter table table_name
NOCHECK VINCLING CONSIGL_NAME;

La sintassi indicata dovrebbe disabilitare il vincolo per le dichiarazioni di inserto e aggiornamento.

Conclusione

In questo post, abbiamo esplorato come utilizzare il lavoro con il vincolo di controllo nel server SQL. Abbiamo discusso su come creare un nuovo vincolo, come modificare un vincolo, come disabilitare un vincolo e come abbandonare un vincolo da una tabella.