|
![]() | Indexy k databázovým tabulkám | ![]() | Databázové tabulky | Referenční integrita | ![]() |
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)
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.
![]() | Indexy k databázovým tabulkám | ![]() | Databázové tabulky | Referenční integrita | ![]() |