Oracle SQL - Constraints - więzy - klucze
Klucze można włączać w czterech różnych trybach. Aby zacząć z nimi zabawę najpierw stwórzymy sobie jeden przykładowy
alter table abc create constraint abc_fk1 forein key (id) references abd(id); -- lub create constraint abc_pk1 primary key (id); alter table abc disable constraint abc_fk1;
Teraz można zabrać się za włączanie tego klucza. Najprostszym sposobem jest
alter table abc enable constraint abc_fk1;
Niestety, na bazie transakcyjnej tak często zmieniane są dane, że prawdopodobnie już po krótkim czasie okaże się, że włączenie klucza jest niemożliwe ze względu na niespójne dane. Wtedy należy korzystać z opcji dodatkowych (np w ramach tymczasowych zabezpieczeń)
enable validate enable novalidate disable validate disable novalidate
W trybie pierwszym czyli enable validate więz jest włączony można powiedzieć standardowo czyli jest włączony a przed jego włączenie następuje walidacja poprawności. Jeśli wszystko się powiedzie sytuacja jest co najmniej OK.
W trybie enable novalidate więz zostanie włączony bez wcześniejszej walidacji - pozwala to na włączenie klucza na niespójnych danych. Po co? A no dlatego, że klucz ten nie pozwoli w przyszłości na dodanie zepsutych/niespójnych danych. Klucz może być więc włączany w takim trybie na okres przejściowy zanim administrator nie uspójni danych w tabelach powiązanych
disable novalidate to w zasadzie synonim słowa disable - klucz wyłączony
ciekawą opcją jest możliwość ustawienia klucza w stan disable validate daje ona możniwość zablokowania edycji tabeli. Klucz zostanie wyłączony ale walidacja musi się odbywać w związku z czym, żadna operacja nie może być zweryfikowana jako poprawna i wszystkie są domyślnie odrzucane.
Przykłady
alter table abc enable validate constraint abc_fk1; alter table abc enable novalidate constraint abc_fk1;
2010.03.28 11:48:35.