Dzięki więzom integralności nie można tak zmodyfikować danych by straciły on spójność. Są zbiorem zasad nałożonych na tabele w bazie danych.
Primary Key
Zapewnia unikalność wartości w kolumnie. Najczęściej zakładany jest na kolumnę która przechowuje dane jednoznacznie określające pojedynczy wiersz. W tabeli może być tylko jeden klucz główny. Zapewnia nie występowanie wartości NULL.
Unique
Zapewnia unikalność wartości w kolumnie, jednak w przeciwieństwie do PRIMARY KEY takich kluczy może być więcej niż jeden, oraz umożliwia występowanie wartości NULL.
NOT NULL
Zapobiega wstawianiu wartości NULL do kolumny.
Check
Zapewnia że wartość wstawiana do kolumny spełnia wymagany warunek logiczny. Nie można w nim wykorzystywać odwołań do innych tabel, funkcji agregujących, SYSDATE.
Foreign key
Jest to klucz obcy. Służy do definiowania relacji pomiędzy tabelami. Zapewnia że rekord w tabeli podrzędnej zawsze będzie miał swojego odpowiednika w tabeli nadrzędnej. Klucz obcy musi się odwoływać do kolumny (kolumn) w tabeli nadrzędnej, na których założony jest UNIQUE lub klucz główny.Zakładanie konstraintów
Więzy możemy zakładać na dwa sposoby. Przy tworzeniu tabeli, oraz nakładając je na już istniejącą tabelę. Poniżej przykład zakładania więzów już przy tworzeniu tabeli:Włączanie i wyłączanie konstraintów
Konstrainty możemy włączyć lub wyłączyć. Możliwość ta staje się przydatna gdy chcemy wykonać czynność którą uniemożliwiłby nam założony constraint. Przykładowo zdejmujemy klucz obcy (FOREIGN KEY) z tabeli jeśli uzupełniamy ją danymi które nie mają swoich odpowiedników w tabeli nadrzędnej.Możemy po wykonaniu zaplanowanych czynności włączyć konstraint, pod warunkiem że jego warunek zostanie spełniony (np. uzupełnimy wpisy w tabeli nadrzędnej w przypadku FOREIGN KEY)
Możemy również włączyć konstraint bez walidacji istniejących danych. Konstraint będzie w takim wypadku obowiązywał tylko dla danych wprowadzonych później:
Usuwanie konstraintów
Aby zdjąć z tabeli konstraint musimy skorzystać z polecenia drop podając nazwę klucza.Poniżej usuwam wszystkie konstrainty z tabeli pilkarze.
Ten temat omawiam na poniższych szkoleniach:
• Podstawy Oracle SQL
• Podstawy SQL i PL/SQL
Możesz w nich uczestniczyć, a jako czytelnik tego bloga otrzymasz 10% zniżki - poinformuj o tym fakcie konsultanta.
Drogi autorze, czy można prosic o zamianę "konstraintów" na "więzy"? ;-)
OdpowiedzUsuńTen komentarz został usunięty przez autora.
Usuńdedykujkę autorowi powy zszego wpisu:
Usuń„Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów.”
Stanisław Lem
pzdr dla autora kursu. dobra robota
Meczacy sa Ci psuedopolonisci. Polski jezyk i tak ma wiekszosc slow przeciazonych. Więzy to sa na rekach, szyji albo kobieta Cie oplata nogami - to masz wiezy...
Usuń"konstraint" - wchodzi nowe slowko, znieksztalcone i dziwne - owszem. Ale nowe - bo znaczy cos nowego. Dzieki takim zabiegom jednomyslnie wiemy ze nie chodzi o wiezy na szyji tylko o ograniczenia tabel
Jeśli już, to nie więzy, co ograniczenia ;-)
OdpowiedzUsuńCześć
OdpowiedzUsuńMam problem. Przy zakładaniu warunku wywala błąd:
[42000][2270] ORA-02270: no matching unique or primary key for this column-list.
Nie mogę dojść o co chodzi, proszę o pomoc.