CHECK: Porovnání verzí

Z Wikipedie, otevřené encyklopedie
Smazaný obsah Přidaný obsah
rozšíření
Řádek 18: Řádek 18:
id INT NOT NULL PRIMARY KEY,
id INT NOT NULL PRIMARY KEY,
name VARCHAR(50),
name VARCHAR(50),
salary INT NOT NULL,
CONSTRAINT check1 CHECK (id>0 AND salary>0)
CONSTRAINT check1 CHECK (id>0 AND salary>0)
);
);

Verze z 28. 6. 2013, 20:56

CHECK je kontrukce jazyka SQL, která představuje omezení hodnot určitého sloupce v tabulce. Dá se říci, že je to jeden z druhů konstrukce CONSTRAINT v tomto jazyce. Pro vytvoření jednoduchých omezení (v rámci jednoho sloupce) může být v některých SŘBD použito pouze klíčovým slovem CHECK, pro složitější podmínky omezení, pro omezení více sloupců a pro pojmenování omezení je před ním použito klíčové slovo CONSTRAINT. S pojmenovaným omezením dá pracovat jako s nedatovým objektem tabulky, mazat jej, přidávat jej a měnit. Obsahuje-li tabulka tento typ omezení, databázový engine při vkládání a úpravě záznamů kontroluje podmínku omezení a nedovolí vložit řádek, který by toto omezení porušoval (místo toho například hodí výjimku nebo chybovou hlášku).

Příklady

Omezení při vytváření tabulky

CREATE TABLE employees(
  id INT NOT NULL PRIMARY KEY,
  name VARCHAR(50),
  salary INT CHECK (salary>0)
);

Výše uvedený příklad (poslední položka) vytvoří omezení pro plat coby kladné číslo (salary větší než 0). Tato syntaxe platí například pro MSSQL, MS Access nebo Oracle. MySQL omezení CHECK podporuje pouze formálně – SQL příkaz s omezením lze spustit (v tomto případě s čárkou před CHECK), ale skutečné vynucení tohoto omezení nefunguje.[1]

Pojmenované omezení při vytváření tabulky

Pro možnost použití více sloupců tabulky a pro pojmenování omezení se používá konstrukce s klíčovým slovem CONSTRAINT.

CREATE TABLE employees(
  id INT NOT NULL PRIMARY KEY,
  name VARCHAR(50),
  salary INT NOT NULL,
  CONSTRAINT check1 CHECK (id>0 AND salary>0)
);

Přidání omezení v existující tabulce

ALTER TABLE employees
ADD CHECK (salary>0);

Přidání pojmenovaného omezení v existující tabulce

ALTER TABLE employees
ADD CONSTRAINT check1 CHECK (salary>0 AND id>0);

Odstranění omezení v tabulce

ALTER TABLE employees
DROP CONSTRAINT check1;

Pro MySQL:

ALTER TABLE employees
DROP CHECK check1;

Změnu omezení lze v rámci ALTER TABLE vykonat zřetězení DROP a ADD. Následující příkaz změní existující omezení pro salary>0 na salary>1000:

ALTER TABLE employees
DROP CONSTRAINT check1,
ADD CONSTRAINT check1 CHECK (salary>1000 AND id>0);

CHECK TABLE

Odkazy

Reference

Související odkazy

Externí odkazy