CHECK

CHECK je konstrukce 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);

Pokud je v tabulce byť jen jediný řádek, který omezující podmínce nevyhovuje, SŘBD nedovolí omezení přidat a vyhodí chybovou hlášku.

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

CHECK TABLE je konstrukce SQL, která zkontroluje tabulku a nahlásí případné chyby. Pozná ji několik relačních databázových systémů. Syntaxe pro MySQL je:[2]

CHECK TABLE jméno_tabulky1[, jméno_tabulky2[, jméno_tabulky3]] {FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED};

Např. v MySQL tento příklad vrátí řádek s následujícími položkami Table – název kontrolované tabulky (včetně prefixu databáze), Op – operace; vrací „check“, Msg_type – typ vzkazu; vrací jedno z následujícího: status, error, info, note nebo warning; Msg_text – text vzkazu; je-li tabulka v pořádku, vrátí OK nebo Table is already up to date.

Obdoby v jiných databázích

MS Access pro sloupce tabulek nabízí v návrhovém režimu kolonky „Podmínka“. Pro textové sloupce má také kolonku „Maska“, pomocí které lze zformátovat podobu hodnout sloupce – obsahuje zástupce alfanumerických, numerických znaků, atd., převod na malá/velká písmena a znaky, které se pouze zobrazí ale neuloží.

Odkazy

Reference

Související články

Externí odkazy

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.