BD-1st-2.4-lab9.tresc-1.1-Slajd22
Odroczone ograniczenia integralnościowe (1)
Zwykłe ograniczenia integralnościowe sprawdzane są zaraz po wykonaniu polecenia modyfikującego dane relacji. Można jednak zdefiniować tzw. odroczone ograniczenia integralnościowe, sprawdzane dopiero w momencie zatwierdzenia transakcji, której jedną z operacji była modyfikacja danych relacji. Jeśli stan danych relacji w momencie zatwierdzenia transakcji nie spełnia zasad narzuconych przez ograniczenia intergralnościowe, wówczas cała transakcja zostaje wycofana.
Aby utworzyć ograniczenie odroczone w poleceniu CREATE TABLE lub ALTER TABLE za definicją ograniczenia dodajemy klauzulę DEFERRABLE. Klauzula ta ustala cechę odroczonej weryfikacji ograniczenia. Następnie musimy określić, czy definiowane ograniczenie będzie zaraz po utworzeniu weryfikowane z opóźnieniem (ustala to klauzula INITIALLY DEFERRED) czy też ma się zachowywać jak standardowe ograniczenie, weryfikowane natychmiast po wykonaniu polecenia modyfikacji danych (ustala to klauzula INITIALLY IMMEDIATE). Dla ograniczenia utworzonego z klauzulą DEFERRED można przełączać moment weryfikacji ograniczenia, takiej operacji nie można jednak wykonać dla zwykłego ograniczenia integralnościowego. Realizuje się to poleceniem SET CONSTRAINTS, w którym podaje się nazwy ograniczeń, które mają zmienić moment weryfikacji, i określa moment sprawdzenia (DEFERRED dla sprawdzenia odroczonego i IMMEDIATE dla weryfikacji natychmiastowej). Zamiast listy ograniczeń można podać słowo ALL, wówczas wszystkim ograniczeniom, utworzonym z opcją DEFERRABLE, zostanie zmieniony moment weryfikacji.