Pomocí této podmínky je možné blíže specifikovat přístupové hodnoty do sloupců tabulek odvozených od domén. Není-li tato podmínka vyhodnocena jako pravdivá, pak je zobrazena chybová hláška a celá operace je zrušena.
Syntaxe podmínky CHECK
<doménová podmínka> =
VALUE <operátor> <hodnota>
| VALUE [NOT] BETWEEN <hodnota> AND <hodnota>
| VALUE [NOT] LIKE <hodnota> [ESCAPE <hodnota>]
| VALUE [NOT] IN (<hodnota> [, <hodnota> ...])
| VALUE IS [NOT] NULL
| VALUE [NOT] CONTAINING <hodnota>
| VALUE [NOT] STARTING [WITH] <hodnota>
|(< doménová podmínka >)
|NOT< doménová podmínka >
| < doménová podmínka > OR < doménová podmínka >
| <doménová podmínka> AND <doménová podmínka>
<operátor> ={=|<|>|<=|>=|!<|!>|<>|!=}
Podmínka CHECK nemůže odkazovat na jiné domény nebo sloupce tabulek. Každá doména může mít pouze jednu podmínku. Chceme-li použít více dílčích podmínek, pak musíme použít výraz AND nebo OR.
Příklady použití podmínky CHECK v definici domény
CREATE DOMAIN ID_CISLO AS INTEGER DEFAULT 2000
CHECK (VALUE > 100);
CREATE DOMAIN zasoby AS VARCHAR(15)
CHECK (VALUE IN ('pivo' , 'vino' , 'maso'));
Znaková sada a způsob třídění
Budeme-li chtít pracovat se znaky v národním kódování a použít specifické národní třídění, pak učinit tyto kroky na úrovni domény je velice elegantní způsob. Kódování lze sice zabezpečit i na úrovni celé databáze, ovšem nikoliv již způsob jejich třídění (collate).Příklad definice domény se znakovou sadou a způsobem třídění pro český jazyk
CREATE TABLE mesto AS VARCHAR(20) CHARACTER SET win1250 COLLATE pxw_csy
Změna domény
Příkazem ALTER DOMAIN je možné měnit libovolné parametry domény kromě vlastnosti NOT NULL a způsobu třídění COLLATE. Změny provedené na doméně jsou automaticky aplikovány na všechny sloupce tabulek odvozených z této domény. Při změně datového typu domény nejsou povoleny takové konverze, které by vedly ke ztrátě nebo ke zkrácení délky řetězce. Měnit tedy lze následující vlastnosti.1. Název domény
2. Datový typ
3. Zrušit nebo definovat novou implicitní hodnotu
4. Zrušit nebo přidat novou podmínku CHECK
Syntaxe příkazu ALTER DOMAIN je následující
ALTER DOMAIN { název domény | starý název TO nový název}{
[SET DEFAULT { literál | NULL | USER }]
| [DROP DEFAULT]
| [ADD [CONSTRAINT] CHECK (<doménová podmínka>)]
| [DROP CONSTRAINT]
| TYPE datový typ
};
Příklady použití příkazu ALTER DOMAIN
ALTER DOMAIN vase_domena SET DEFAULT 9988; //změna implicitní hodnoty
ALTER DOMAIN vase_domena TO vase_nova_domena; // přejmenování domény
ALTER DOMAIN vase_domena TYPE CHAR (20); // změna datového typu
ALTER DOMAIN vase_domena DROP CONSTRAINT; // zrušení CHECK podmínky
ALTER DOMAIN vase_domena ADD CHECK (VALUE > 12345); //definice nové CHECK podmínky
Zrušení domény
Doménu lze zrušit pouze tehdy, není-li použita pro definici žádného sloupce tabulky a to příkazem DROP DOMAIN
DROP DOMAIN vase_domena;
Autor: Robert Habrman