602SQL-Úplná dokumentace Index  

Integritní omezení v tabulce

Vnitřní integritní omezení

Integritní omezení umožňuje stanovit podmínku na hodnoty sloupců v každém záznamu tabulky. Pokud při manipulaci s daty v tabulce (vkládání a přepisování) bude v některém záznamu porušena platnost této podmínky, dojde k chybě 40005 (CHECK_CONSTRAIN) a transakce bude odvolána.

Je-li chyba v zápisu integritního omezení, dojde pouze k varování (ERROR_IN_CONSTRS) a transakce není odvolána.

Vnitřní integritní omezení se specifikuje takto:

vnitřní_integritní_omezení ::= CHECK ( podmínka ) [ vyhodnocení ] 

Alternativně lze vnitřní integritní omezení týkající se jednoho sloupce popsat jako vlastnost sloupce.

Příklad: tabulka s podmínkou na číslo >0 a aktivní referenční integritou do číselníku firem (nadřízená tabulka FIRMY)

CREATE TABLE `OBJEDNAVKY` (
`FIRMA_ID` INTEGER ,
`OBJEDNANO` NUMERIC(14,2) ,
...
CONSTRAINT `Firmy` INDEX (`FIRMA_ID`),
CONSTRAINT `Check_gt0` CHECK (objednano>0) INITIALLY IMMEDIATE,
CONSTRAINT `Firma-Obj` FOREIGN KEY (`FIRMA_ID`) REFERENCES `FIRMY`(`FIRMA_ID`) 
	ON UPDATE CASCADE ON DELETE CASCADE)

Kdy se kontroluje dodržení integritních omezení?

Server může kontrolovat dodržení integritních omezení buď na konci příkazu nebo na konci transakce. Čas vyhodnocení integritního omezení předepisuje klauzule INITIALLY IMMEDIATE nebo INITIALLY DEFERRED.