Segna il video come già completato  
Se vuoi, sarebbe utile un giudizio su questo video    
In questo video studieremo i vincoli di controllo, anche detti VINCOLI CHECK. Quando impostiamo un vincolo check su una colonna, ed andiamo ad aggiungere un nuovo record della tabella, il vincolo effettuerà la verifica dei dati immessi nella colonna vincolata. Il ragionamento è molto simile a quello fatto in un video precedente, in cui avevamo parlato dei vincoli di chiave esterna. Anche in quel caso all'inserimento di un nuovo record veniva verificato che i dati immessi nel campo vincolato rientravano nel range costituito da tutti i valori elencati nel campo vincolante, appartenente ad un'altra tabella o addirittura alla stessa tabella. Nel caso dei vincoli check, la verifica sui valori viene fatta su un espressione logica e non sui dati di un'altra colonna. Questa espressione logica è una qualsiasi espressione che ritorni true o false. Vediamo un esempio pratico. Abbiamo già pronta una tabella composta da quattro campi che rappresentano lo scheletro di un'anagrafica dipendenti, ossia Id (che è una chiave primaria, ed identità autoincrementale), Nome, Cognome e Salario. CREATE TABLE [dbo].[Dipendenti]( [Id] [smallint] IDENTITY(1,1) NOT NULL, [Nome] [varchar](50) NULL, [Cognome] [varchar](50) NULL, [Salario] [money] NULL, CONSTRAINT [PK_Dipendenti] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] Tramite vincolo check, possiamo dire limitare i valori immessi nel campo Salario entro un range che decidiamo noi. Ad esempio vogliamo che il salario sia tra i 20.000 ed i 30.000 euro. Tutti gli altri valori che si tenteranno di immettere saranno rifiutati dal motore di database. Andiamo quindi in progettazione, e dalla toolbar clicchiamo il pulsante "Gestione vincoli check". Lo stesso risultato lo possiamo ottenere anche premendo il tasto destro del mouse sulla tabella in progettazione e selezionando la voce "Vincoli check". A questo punto ci si è aperta la finestra "Verifica vincoli". Premiamo il pulsante "Aggiungi". Così facendo compare il nome del nostro vincolo, CK_Dipendenti dove CK_ è il suffisso di tutti i vincoli Check. Andiamo sulla riga Espressione per generare un'espressione di controllo per il vincolo. Aggiungiamo l'espressione Salario BETWEEN 20000 AND 30000 Diamo Ok alla finestra e assegniamo una descrizione significativa a questo vincolo, in modo da ricordarci immediatamente l'esatto scopo per il quale l'avevamo creato: Vincolo di controllo che limita i valori di Salario tra 20000 e 30000 euro. Premiamo quindi il pulsante "Chiudi". Andiamo nel nodo Vincoli della tabella Dipendenti per verificare che il vincolo è stato creato correttamente. E' proprio così: c'è CK_Dipendenti. Proviamo adesso ad aggiungere un nuovo record che rispetti i limiti che abbiamo imposto. Ad esempio: Pietro Blui 250000 Tutto a posto: il record è stato salvato. Proviamo ad aggiungere un nuovo record che vada oltre i limiti: Giorgio Gialli 40000 Ecco che ci compare il messaggio di errore "L'istruzione INSERT è in coflitto con il vincolo CHECK CK_Dipendenti", proprio come avevamo previsto. 40000 va fuori dal range di valori che avevamo imposto. Come tutte le volte, vediamo come aggiungere il vincolo tramite script. Prima di tutto rimuoviamo il vincolo manualmente, andando nel nodo Vincoli e rimuovendo CK_Dipendenti. la sintassi dello script per l'aggiunta di un nuovo vincolo CHECK è la seguente ALTER TABLE nometabella ADD CONSTRAINT nomevincolo CHECK (espressione di controllo) che nel nostro caso diventa ALTER TABLE Dipendenti ADD CONSTRAINT CK_Dipendenti CHECK (Salario BETWEEN 20000 AND 30000) Per la rimozione del vincolo tramite script la sintassi è la seguente: ALTER TABLE nometabella DROP CONSTRAINT nomevincolo cioè ALTER TABLE Dipendenti drop CONSTRAINT CK_Dipendenti In questo video studieremo i vincoli di controllo che sono anche detti vincoli check. Quando impostiamo un vincolo check su una colonna ed andiamo ad aggiungere un nuovo record nella tabella questo vincolo effettuerà la verifica dei dati immessi nella colonna vincolata. Il ragionamento è molto simile a quello che abbiamo fatto in un video precedente, in cui abbiamo parlato dei vincoli di chiave esterna. Anche in quel caso l'inserimento di un nuovo record veniva verificato che i dati immessi nel campo vincolati rientrassero in un range costituito da tutti i valori elencati nel campo vincolante che era appartenente ad un'altra tabella oppure addirittura la stessa tabella. Nel caso del vincolo che prendiamo in esame in questo video, cioè il il vincolo check, la verifica sul valore viene fatta non sui dati di un'altra colonna ma un'espressione logica. Quest'espressione logica è una qualsiasi espressione che ritorni true o false. Vediamo un esempio pratico. Abbiamo già preparato una solita tabella dipendenti che abbiamo visualizzatore in progettazione è costituita come al solito dai nostri campi ID, chiave primaria che è un campo identità auto incrementale con un incremento di un'unità. Abbiamo poi il campo nome di tipo Varchar, il campo cognome anch'esso di tipo varchar, il campo campo il salario di tipo smallint. Tramite il vincolo check possiamo dire che vogliamo limitare valori immessi nel campo salario entro un range che decidiamo noi. Ad esempio vogliamo che tutti salari immessi in questo campo rientrino tra i 20.000 euro e i 30.000 euro, Tutti gli altri valori che si tenteranno di mettere sia manualmente sia tramite script saranno rifiutati dal motore di database. Quindi per aggiungere un nuovo vincolo check dobbiamo essere in progettazione della tabella e premere il pulsante gestioni vincoli check. Possiamo anche cliccare col tasto destro del mouse sulla griglia e selezionare vincoli check. In entrambi i casi ci si apre nuova finestra verifica vincoli premiamo quindi il pulsante aggiungi per aggiungere un nuovo vincolo e vediamo che viene creato un nuovo vincolo è con il nome citato andrà scorta dipendenti dove città Panda scorre e il suffisso standard per i vincoli ricette mentre il nome e che segue andrà scorta il nome della nella tabella e nella quale viene creato il vincolo andiamo quindi nella riga espressione per generare una nuova espressione di controllo premiamo pulsante e ci si apre la casella di testo nella quale possiamo scrivere la nostra espressione di controllo. Nel nostro caso vogliamo, come detto in precedenza, vincolare il campo salario a un range di valore compreso tra i 20.000 € 30.000 per cui dovremmo andare ad utilizzare un'espressione di questo tipo di salario campo vincolato di quindi è il primo valore e il secondo valore premiamo che lei a questo punto possiamo anche dare una descrizione al nostro vincolo check in modo da ricordarci immediatamente l'esatto scopo per il quale l'abbiamo creato e possiamo quindi scrivere vincolo di controllo che limita i valori del campo salario tra 20.000 e € 30.000 premiamo il pulsanete chiudi a questo punto possiamo salvare la tabella adesso che la tabellaè salvata andiamo in nodo vincoli della tabella dipendenti per vedere se effettivamente nostro vincolo check è stato salvato correttamente abbiamo quindi il nodo vediamo che effettivamente così CK dipendenti è stato creato correttamente adesso che il vincolo è stato creato proviamo ad aggiungere un nuovo record a quindi un nuovo dipendente che rispetti i limiti che abbiamo imposto cioè creeremo un nuovo dipendente con salario compreso tre 20.000 e € 30.000 andiamo quindi in modifica della tabella dipendenti aggiungiamo nuovo dipendente crediamo che il nuovo dipendente e assegnamo un salario di € 25.000 il record è stato effettivamente salvato adesso proviamo ad inserire un altro dipendente che questa volta da un salario uscirà dai limiti che abbiamo appena imposto assegnamo c'è un salario d'esempio di € 40.000 proviamo a salvare record in effettivamente accade quello che c'aspettavamo salviamo messaggio di errore messaggio di errore ci dice che è l'istruzione di inserti in conflitto con il vincolo CK dipendenti c'è abbiamo inserito in poche parole un salario che va oltre i limiti che abbiamo imposto quindi eliminiamo l'inserimento di questo record premendo il tasto esca e come tutte le volte andiamo a vedere come aggiungere il vincolo tramite scritte prima di tutto andiamo a rimuovere manualmente il vincolo selezionando elimina le premendo pulsante ok il vincolo è stato effettivamente rimosso andiamo quindi a creare una nuova criteri utilizzerà una sintassi di questo tipo altero te il buon nome della tabella nella quale vogliamo inserire il vincolo il nome del vincolo il tipo di vincolo che come abbiamo visto il vincolo cieca nell'espressione di controllo c'è quella che abbiamo aggiunto manualmente nella finestra ossia salario abitui in 20.000 tende € 30.000 oppure una qualsiasi altra espressione di controllo nel nostro caso questo scritte in diventa alter debbono dipendenti accostamento CK dipendenti c'è il vincolo check andrà scorta nome della tabella questo e lo standard però nulla ci vieta di modificare il nome dell'era del vincolo check e la nostra espressione di controllo a nostra espressione di controllo era. Salario di qui in 20.000 tende 30.000 proviamo a lanciare questo scritte verifichiamo che sia stato creato nuovo vincolo aggiorniamo effettivamente nostro vincolo è stato ricreato correttamente la rimozione di un vincolo check avrà invece questa sintassi altero te il buon nome tabella do costa niente nome del vincolo quindi nel nostro caso questa quiete diventa alter debbono dipendenti mentre il posto di nome vincolo aggiungiamo CK dipendenti non lanciamo ragioniamo il nodo vincoli vediamo che effettivamente il vincolo è stato rimosso naturalmente nulla ci vieta di avere più vincoli sullo stesso campo d'esempio possiamo riprendere questa in questo scritte commentare questo qua e quindi è aggiungere un vincolo cieca chiamato CK dipendenti che vincoli salario tra le 20 1000 € 30.000 proviamo ad eseguirlo e creare un altro vincolo check perché chiamiamo d'esempio e CK dipendenti uno che verifichi che il salario sia tre 20.000 e i 21.000 questo. Se proviamo a creare un nuovo dipendente e proviamo ad assegnare un salario inferiore 30.000 ma superiore 21.000 ad esempio 22.000 vediamo che l'inserimento non è in conflitto con me il vincolo check eccitata dipendenti ma confluite in con il secondo vincolo c'è CK dipendenti uno quindi in definitiva si possono avere naturalmente più vincoli sullo stesso campo di fine importante notare che un vincolo check non impedisce di consentire i valori nulla sul campo vincolato ad esempio se non è eliminassi molto possibilità di inserire valori nulla nel campo salario potremo sempre utilizzare i vincoli check