CHECK

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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. +more 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.

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ů. +more Syntaxe pro MySQL je:.

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. +more, převod na malá/velká písmena a znaky, které se pouze zobrazí ale neuloží.

Odkazy

Reference

Související články

CONSTRAINT * Trigger

Externí odkazy

http://www.w3schools.com/sql/sql_check.asp * http://msdn.microsoft.com/en-us/library/ms189862(v=sql.105).aspx

Kategorie:SQL

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top