DEFERRABLE INITIALLY DEFERRED kitsenduse definitsioonis tähendaks seda, et kitsenduse kontroll lükkub transaktsiooni lõppu - transaktsioon võib sisaldada mitut andmemuudatust, transaktsiooni käigus võivad muudatused olla kitsendusega vastuolus, kuid kui transaktsiooni lõpuks on andmed kitsendusega kooskõlas, siis andmebaasisüsteem ei tee sellest numbrit. Vaikimisi (NOT DEFERRABLE omadus) kontrollib PostgreSQL kitsenduse täidetust kas iga rea muutmise järel (NOT NULL, CHECK, PRIMARY KEY, UNIQUE kitsendused) või andmete muutmise lause täitmise järel (FOREIGN KEY, EXCLUDE kitsendused).
Artiklis Deferrable SQL Constraints in Depth tuuakse PostgreSQL näitel välja olukorrad, millal DEFFERRABLE kitsendusi kasutada ja millal mitte.
DEFERRABLE kitsenduste kasutamise näidete hulgas on:
Artiklis Deferrable SQL Constraints in Depth tuuakse PostgreSQL näitel välja olukorrad, millal DEFFERRABLE kitsendusi kasutada ja millal mitte.
DEFERRABLE kitsenduste kasutamise näidete hulgas on:
- andmete lisamine tabelitesse, mis kohustuslikke välisvõtmeid kasutades viitavad üksteisele (minu arvates peaks siinkohal üle vaatama andmebaasi struktuuri),
- eksklusiivsete ressursside ümberjagamine rühmade vahel (iga ressurss saab olla seotud vaid ühe rühmaga),
- unikaalsete järjekorranumbrite muutmine (parem lahendus võiks olla ujukomaarvude kasutamine järjekorranumbritena),
- andmete uude andmebaasi laadimise mugavamaks tegemine.
- selline kitsenduse omadus võib takistada andmebaasisüsteemil kasutada seda kitsendust päringu optimeerimisel ja seega suurendada päringu täitmiseks kuluvat aega (siin on näide selle kohta Oracles),
- keerulisem silumine.
- Oracle 12c kõigi kitsenduse tüüpide puhul,
- PostgreSQL 14 ei saa CHECK ja NOT NULL kitsenduste puhul,
- MySQL 8 ei saa ühegi kitsenduse tüübi puhul.
Hinda postitust:
Keskmine hinne : Pole veel hinnanguid!