4UZ 6 WIĘZY IWYZWALACZE W JĘZYKU SQL
PRZYKŁAD 6.12
Można nawet określić nazwę kluczy zarówno głównych, jak i obcych. Na przykład, aby nazwać więzy klucza głównego określone na rys. 6.1, możemy w następujący sposób zapisać treść z wiersza 2):
2) nazwisko CHAR(30) CONSTRAINT NazwiskoToKlucz PRIMARY KEY,
W podobny sposób można zdefiniować więzy atrybutów CHECK, które wy stępują w przykładzie 6.6:
4) płeć CHAR(1) CONSTRAINT NieNijaki
CHECK (płeć IN ('K', 'M')),
Z kolei nazwę dla więzów dziedziny z przykładu 6.8 można określić w następujący sposób:
CREATE DOMAIN DziedzinaCert INT
CONSTRAINT sześćCyfr CHECK (VALUE >= 100000);
W końcu następująca definicja:
6) CONSTRAINT PrawoDoTytułu
CHECK (płeć = 'F' OR nazwisko NOT LIKE 'Ms.\%')
służy do nazwania więzów krotkowych CHECK, określonych poprzednio w' wierszu 6) na rys. 6.4.
□
Więzy określone dla tabel, dziedzin lub atrybutów można zmieniać za pomocą instrukcji ALTER. Niektóre aspekty stosowania tej instrukcji przedstawiono już w p. 5.7.4 przy okazji usuwania atrybutów z tabel i dołączania nowych; korzystaliśmy wówczas z instrukcji ALTER table. Z kolei w p. 5.7.6 opisano użycie instrukcji AT,TER DOMAIN przy dołączaniu wartości domniemanych.
Tego typu instrukcji można również użyć w przypadku zmian więzów, przy czym zarówno do modyfikowania więzów atrybutów, jak i więzów krotek używa się postaci ALTER TABLE. Usunięcia więzów dokonuje się, stosując słowo kluczowe DROP, po którym podaje się nazwę usuwanych więzów, a z kolei dołączenie nowych więzów wyraża się przez słowo kluczowe A! po którym definiuje się nowe więzy.
PRZYKŁAD 6.13
Dołączanie i usuwanie prześledzimy na więzach z przykładu 6.12. Najpie zostaną usunięte więzy klucza głównego nazwisko w relacji GwiazdaFi mowa:
ALTER TABLE GwiazdaFi linowa DRO? CONSTRAINT Na zwi s koTcKIucz;
Potem usuniemy więzy atrybutu typu CHECK, które służą do ograniczcr zakresu wartości atrybutu płeć:
ALTER TABLE GwiazdaFilinowa DROP CONSTRAINT NieNijaki;
Można także usunąć więzy, które nadają prawo korzystania z tytułu ' Ms. wy łącznie kobietom:
ALTER TABLE GwiazdaFilmowa DROP CONSTRAINT PrawoDcTytułu;
Można przywrócić te więzy, dołączając je ponownie do schematu relac
GwiazdaFilmowa.
ALTER TABLE GwiazdaFilmowa ADD CONSTRAINT NazwiskoToKlucz PRIMARY KEY (nazwisko);
ALTER TABLE GwiazdaFilmowa ADD CONSTRAINT NieNijaki CHECK(płeć IN ('K', 'Mr));
ALTER TABLE GwiazdaFilmowa ADD CONSTRAINT PrawoDoTytułu
CHECK (płeć = 'K' OR nazwisko NOT LTKE 'Ms. \%');
Teraz wszystkie więzy są więzami kratkowymi, a nie atrybutowymi. Ni można im przywrócić charakteru więzów' atrybutowych, gdyby natomiast t< były więzy dziedziny, lo można by zmieniać w całej dziedzinie, a nie tylk< w relac j i Gwi a zda Fi Imowa.
W powyższych definicjach nazwa w ięzów nie jest parametrem obowiąz kowym. Jednakże nie można polegać na $QL, że definicje więzów sprzed icl usunięcia są pamiętane i mogą zostać odtworzone. A zatem trzeba podać defi nicję więzów, a nie tylko ich nazwę.
□