SQL Constraints
Check Constraint slouží k zadání predikátu, který musí splňovat každý tuple v dané relaci. Omezuje hodnoty, které může sloupec ve vztahu nabývat.

  • Predikát v kontrolním omezení může obsahovat dílčí dotaz.
  • Kontrolní omezení definované na atributu omezuje rozsah hodnot pro daný atribut.
  • Pokud hodnota přidávaná do atributu tuplu porušuje kontrolní omezení, kontrolní omezení se vyhodnotí jako false a příslušná aktualizace se přeruší.
  • Kontrolní omezení se obvykle zadává příkazem CREATE TABLE v jazyce SQL.

Syntaxe:

CREATE TABLE pets( ID INT NOT NULL, Name VARCHAR(30) NOT NULL, Breed VARCHAR(20) NOT NULL, Age INT, GENDER VARCHAR(9), PRIMARY KEY(ID), check(GENDER in ('Male', 'Female', 'Unknown')) );

Poznámka: Kontrolní omezení ve výše uvedeném příkazu SQL omezuje příslušnost GENDER pouze k uvedeným kategoriím. Pokud je přidán nový tuple nebo je aktualizován existující tuple ve vztahu s GENDER, který nepatří do žádné ze tří uvedených kategorií, pak je příslušná aktualizace databáze přerušena.

Dotaz

Omezení: Na vysokou školu se mohou zapsat pouze studenti, jejichž věk >= 17 let.
Schema pro databázi studentů na univerzitě:

CREATE TABLE student( StudentID INT NOT NULL, Name VARCHAR(30) NOT NULL, Age INT NOT NULL, GENDER VARCHAR(9), PRIMARY KEY(ID), check(Age >= 17) );

Relace student:

StudentID Jméno Věk Pohlaví
1001 Ron 18 Muž
1002 Sam 17 Muž
1003 Georgia 17 Žena
1004 Erik 19 Neznámý
1005 Christine 17 Žena

Vysvětlení: V uvedené relaci je věk všech studentů větší než roven 17 let, podle omezení uvedeného v kontrolním příkazu ve schématu relace. Pokud však bude proveden následující příkaz SQL:

INSERT INTO student(STUDENTID, NAME, AGE, GENDER) VALUES (1006, 'Emma', 16, 'Female');

Nebude provedena žádná aktualizace databáze a jako věk < 17 let.

Různé možnosti použití kontrolního omezení:

  • S alter: Kontrolní omezení lze také přidat k již vytvořené relaci pomocí syntaxe:
    alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
  • Přidání názvu proměnné ke kontrolnímu omezení:Kontrolnímu omezení lze přidat název proměnné pomocí syntaxe:
    alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
  • Odstranění kontrolního omezení: Odstranění kontrolního omezení ze vztahu v databázi ze serveru SQL pomocí syntaxe:
    alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
  • Odstranění kontrolního omezení: Tento článek napsal Mayank Kumar: Kontrolní omezení lze ze vztahu v databázi v MySQL odstranit pomocí syntaxe:
    alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;

Tento článek napsal Mayank Kumar. Pokud se vám GeeksforGeeks líbí a chtěli byste přispět, můžete také napsat článek pomocí stránky contribute.geeksforgeeks.org nebo poslat svůj článek na adresu [email protected]. Uvidíte, jak se váš článek objeví na hlavní stránce GeeksforGeeks, a pomůžete tak ostatním geekům.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.