CHECK: Porovnání verzí

Přidáno 156 bajtů ,  před 2 lety
m
Robot: -zastaralá značka HTML; kosmetické úpravy
m (Robot: -zastaralá značka HTML; kosmetické úpravy)
'''<tt>CHECK</tt>''' 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 '''<tt>[[CONSTRAINT]]</tt>''' 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 <tt>CHECK</tt>, 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 '''<tt>[[CONSTRAINT]]</tt>'''. 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 ===
<sourcesyntaxhighlight lang=sql>
CREATE TABLE employees(
id INT NOT NULL PRIMARY KEY,
salary INT CHECK (salary>0)
);
</syntaxhighlight>
</source>
Výše uvedený příklad (poslední položka) vytvoří omezení pro plat coby kladné číslo (<tt>salary</tt> větší než 0). Tato syntaxe platí například pro [[MSSQL]], [[MS Access]] nebo [[Oracle]]. [[MySQL]] omezení <tt>CHECK</tt> podporuje pouze formálně – SQL příkaz s omezením lze spustit (v tomto případě s čárkou před <tt>CHECK</tt>), ale skutečné vynucení tohoto omezení nefunguje.<ref>http://forums.mysql.com/read.php?136,572271,572271#msg-572271</ref>
 
=== 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 <tt>CONSTRAINT</tt>.
<sourcesyntaxhighlight lang=sql>
CREATE TABLE employees(
id INT NOT NULL PRIMARY KEY,
CONSTRAINT check1 CHECK (id>0 AND salary>0)
);
</syntaxhighlight>
</source>
 
=== Přidání omezení v existující tabulce ===
<sourcesyntaxhighlight lang=sql>
ALTER TABLE employees
ADD CHECK (salary>0);
</syntaxhighlight>
</source>
 
=== Přidání pojmenovaného omezení v existující tabulce ===
<sourcesyntaxhighlight lang=sql>
ALTER TABLE employees
ADD CONSTRAINT check1 CHECK (salary>0 AND id>0);
</syntaxhighlight>
</source>
 
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 ===
<sourcesyntaxhighlight lang=sql>
ALTER TABLE employees
DROP CONSTRAINT check1;
</syntaxhighlight>
</source>
 
Pro [[MySQL]]:
<sourcesyntaxhighlight lang=sql>
ALTER TABLE employees
DROP CHECK check1;
</syntaxhighlight>
</source>
 
Změnu omezení lze v rámci <tt>[[ALTER]] TABLE</tt> vykonat zřetězení <tt>[[DROP]]</tt> a <tt>ADD</tt>. Následující příkaz změní existující omezení pro salary>0 na salary>1000:
<sourcesyntaxhighlight lang=sql>
ALTER TABLE employees
DROP CONSTRAINT check1,
ADD CONSTRAINT check1 CHECK (salary>1000 AND id>0);
</syntaxhighlight>
</source>
 
== <tt>CHECK TABLE</tt> ==
<tt>CHECK TABLE</tt> 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:<ref>http://dev.mysql.com/doc/refman/5.6/en/check-table.html</ref>
<sourcesyntaxhighlight lang="sql">
CHECK TABLE jméno_tabulky1[, jméno_tabulky2[, jméno_tabulky3…]] {FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED};
</syntaxhighlight>
</source>
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í „<tt>check</tt>“, '''Msg_type''' – typ vzkazu; vrací jedno z následujícího: <tt>status</tt>, <tt>error</tt>, <tt>info</tt>, <tt>note</tt> nebo <tt>warning</tt>; '''Msg_text''' – text vzkazu; je-li tabulka v pořádku, vrátí <tt>OK</tt> nebo <tt>Table is already up to date</tt>.
 
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 ===
<references />
=== Související odkazy ===
* [[CONSTRAINT]]
* [[Trigger]]
=== Externí odkazy ===
* http://www.w3schools.com/sql/sql_check.asp
* http://msdn.microsoft.com/en-us/library/ms189862(v=sql.105).aspx
422 547

editací