5° Anno TEORIA 4. Introduzione al linguaggio SQL | 页面 13

16. Il linguaggio SQL Vers. 11.0 – Gennaio 2026
Linguaggio SQL: Vincoli di integrità
Riassumendo quanto visto finora per creare e gestire i vincoli RELAZIONALI in SQL possiamo dire che:
• Per esprimere i vincoli interni o intrarelazionali( su singola ennupla o su più ennuple) utilizziamo durante la creazione di una tabella( istruzione CREATE TABLE):
- la clausola NOT NULL per esprimere i vincoli sul valore di un attributo;- la clausola PRIMARY KEY per esprimere i vincoli sulle chiavi primarie;- la clausola UNIQUE per esprimere vincoli sulle chiavi candidate;- la clausola CHECK per esprimere vincoli di ennupla che coinvolgono uno o più attributi;
• Per esprimere i vincoli interrelazionali o esterni referenziali utilizziamo durante la creazione di una tabella( istruzione CREATE TABLE):
- la clausola FOREIGN KEY … REFERENCES per indicare le chiavi esterne con in aggiunta la clausola NO ACTION( analogo a RESTRICT) | CASCADE | SET DEFAULT | SET NULL per implementare una delle tre politiche:
• rifiuto delle modifiche che violano un vincolo
• propagazione a cascata delle modifiche
• impostazione al valore di default delle chiavi delle tabelle interessate
• impostazione a NULL delle chiavi delle tabelle interessate
• Per esprimere i vincoli interrelazionali esterni non referenziali non si utilizzano specificazioni di elementi dello schema inserendole all’ interno di altre istruzioni SQL.
Essi vengono tradotti utilizzando apposite istruzioni SQL le asserzioni che sono esse stesse elementi dello schema. Per creare un’ asserzione si utilizza l’ istruzione CREATE ASSERTION che ha la seguente sintassi:
CREATE ASSERTION < NomeAsserzione > CHECK(< Condizione >);
dove: < Condizione > deve essere sempre verificata( ossia sempre vera) e qualsiasi modifica alle relazioni che la renda falsa deve essere rifiutata; < NomeAsserzione > coincide per maggiore chiarezza con l’ identificativo del vincolo interrelazionale o esterno NON referenziale cui si riferisce.
Autore: Rio Chierego( email: riochierego @ libero. it- sito web: www. riochierego. it) Pag. 13