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: 0
    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-2025 v.1.5 | design: diviXdesign & rainbowcolors