Loading:


Używanie INITIALLY DEFERRED atrybutów w Oracle / SQL

Domyślnie w języku używane są wartości INITIALLY IMMEDIATE, których nie musimy dopisywać do zapytania, chociaż możemy; jednak nic to nie zmieni. Opcja INITIALLY DEFERRED jak z samej nazwy opóźnia tą operację.

 

O jakiej operacji jest mowa?

 

Operacja najczęściej odnosi się do deklarowania klucza obcego w tabeli. Za pomocą drugiej opcji możemy najpierw stworzyć rekordy z odwołaniami do kluczy, a dopiero potem utworzyć wpisy gdzie są przechowywane klucze. Nie wytworzy wtedy SQL żadnego błędu, jak to zazwyczaj występuje w domyślnych ustawieniach. Pamiętajmy jednak, że SQL nie będzie sprawdzał klucza obcego tylko przed zmaknięciem jakiejś tranzakcji.

 

CREATE TABLE student (
ucas CHAR(9) PRIMARY KEY
);
CREATE TABLE przedmiot (
kod CHAR(7) PRIMARY KEY
);
CREATE TABLE rejestracja (
ucas CHAR(9),
kod CHAR(7),
PRIMARY KEY (ucas, kod),
FOREIGN KEY (ucas) REFERENCES student INITIALLY DEFERRED,
FOREIGN KEY (code) REFERENCES przedmiot INITIALLY DEFERRED
);
//dozwolone jest tworzenie najpierw wpisu który odwołuje się do pustego klucza obcego
INSERT INTO rejestracja VALUES ('123456789','CS27020');
INSERT INTO rejestracja VALUES ('123456789','CS21120');
//przed zakończeniem tranzakcji dodajemy klucze
INSERT INTO student VALUES ('123456789');
INSERT INTO przedmiot VALUES ('CS27020');



Napisz Artyku³

Listing

niema




Dodano przez: divix
Ranga: Administrator serwisu Punktów: 38523
Komentarze użytkowników
    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2024 v.1.5 | design: diviXdesign & rainbowcolors