X


[ Pobierz całość w formacie PDF ]
.n])]REFERENCES ref_table [(ref_column [,.n])][ON UPDATE { CASCADE | NO ACTION}][ON DELETE { CASCADE | NO ACTION}][NOT FOR REPLICATION]Jak zwykle, nazwa powi�zania (constraint) jest opcjonalna.Jak w przypadkuinnych wi�zów referencyjnych, nazwa kolumny nie musi by� wywo�ywana lokalnieje�eli jest to powi�zanie pojedynczej kolumny.Równie� nie trzeba nazywa�kolumny w innej tablicy, je�eli kolumny maj� tak� sam� nazw�.Je�eli nie zostanie okre�lony parametr ON UPDATE lub ON DELETE, obydwa s�ustawione na NO ACTION aby zachowa� zgodno�� z wcze�niejszymi wersjami SQLServera.Oznacza to, �e usuni�cie lub zmiany warto�ci klucza podstawowego nies� dozwolone je�eli jakiekolwiek wiersze odwo�uj� si� do klucza podstawowego wtablicy (tablicach) z kluczem obcym.Je�eli zostanie okre�lona opcja CASCADE, wiersze z tablicy (tablic) z kluczemobcym s� usuwane lub otrzymuj� odpowiednio zaktualizowan� warto�� kolumnyreferencyjnej.W przypadku odniesienia do powi�zania unikalnego klucza podstawowego wielukolumn, nale�y uwa�a�, aby odwo�ywa� si� do nich w tej samej kolejno�ci nali�cie kolumn w listach FOREIGN KEY i REFERENCES.Obs�ugiwane s� równie�odwo�ania w�asne, czyli mo�na zastosowa� odwo�anie tablicy do niej samej (zinn� kolumn�).Nast�puj�cy kod tworzy tablic� pracowników i tablic� zamówie� (która by�awype�niana przez pracownika).Aby sprawdzi�, czy odpowiedni pracownikwprowadzi� zamówienie, mo�na zaprogramowa� t� w�asno�� lub zadeklarowa� j� zkluczami obcymi.Nast�pnie, gdy kto� próbuje usun�� pracownika, osoba ta niejest uprawniona do wykonania tego dopóki s� zamówienia zwi�zane z tympracownikiem.CREATE TABLE emp(emp_id int not null CONSTRAINT pk_emp PRIMARY KEY,emp_name char(30) not null)GoCREATE TABLE orders(order_id int not null CONSTRAINT pk_order PRIMARY KEY,emp_id int not null CONSTRAINT fk_orderFOREIGN KEY (emp_id) REFERENCES emp (emp_id)ON DELETE NO ACTION ON UPDATE NOACTION)GoINSERT emp VALUES (1,'Joe Smith')INSERT emp VALUES (2,'Ann Jones')INSERT orders VALUES (1,1)INSERT orders VALUES (2,2)GoPrzyk�ad ten dzia�a do tej pory poprawnie.Teraz nale�y spróbowa� wpisa�zamówienie dla nieistniej�cego pracownika:INSERT orders VALUES (3,3)GoServer: Msg 547, Level 16, State 1, Line 1INSERT statement conflicted with COLUMN FOREIGN KEY constraint'fk_order'.The conflict occurred in database 'pubs',table 'emp', column 'emp_id'.The statement has been aborted.Nast�pnie nale�y spróbowa� usun�� pracownika, który posiada zamówienie:DELETE emp WHERE emp_id = 1GoServer: Msg 547, Level 16, State 1, Line1DELETE statement conflicted with COLUMN REFERENCE constraint'fk_order'.The conflict occurred in database 'pubs',table 'orders', column 'emp_id'The statement has been aborted.Przyk�ad odwo�ania si� do siebie samej mo�e mie� nast�puj�c� posta�,oznaczaj�c�, �e ka�dy mened�er musi mie� równie� poprawne dane jako pracownik:CREATE TABLE emp_manager(emp_id int not null CONSTRAINT pk_emp_mgr PRIMARY KEY,mgr_id int not null CONSTRAINT fk_emp_mgr FOREIGN KEYREFERENCES emp_manager (emp_id),emp_name char(30) not null)Te dwa polecenia insert zako�cz� si� sukcesem, poniewa� odwo�uj� si� dopoprawnych danych:INSERT emp_manager VALUES (1,1, 'Ann Jones')INSERT emp_manager VALUES (2,1, 'Tom Smith')Warto jednak pami�ta�, �e je�eli nast�pi odwo�anie do osoby, która jeszcze nieistnieje, jak np.:INSERT emp_manager VALUES (3,4, 'Bob Newett')otrzyma si� komunikat podobny jak poprzednio � �e zosta�o naruszone powi�zanieklucza obcego.Podej�cie to mo�e by� bardzo przydatne w wielu rzeczywistychscenariuszach.Kod z wydruku 14.1 dodaje tablic� zamówie� szczegó�owych, która u�ywa nowychmo�liwo�ci SQL Servera 2000 do kaskadowego usuwania lub wprowadzania danych.Wydruk 14 [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • listy-do-eda.opx.pl
  • Drogi uĚźytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczać Ci coraz lepsze usługi. By móc to robić prosimy, abyś wyraził zgodę na dopasowanie treści marketingowych do Twoich zachowań w serwisie. Zgoda ta pozwoli nam częściowo finansować rozwój świadczonych usług.

    Pamiętaj, że dbamy o Twoją prywatność. Nie zwiększamy zakresu naszych uprawnień bez Twojej zgody. Zadbamy również o bezpieczeństwo Twoich danych. Wyrażoną zgodę możesz cofnąć w każdej chwili.

     Tak, zgadzam się na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerĂłw w celu dopasowania treści do moich potrzeb. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

     Tak, zgadzam się na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerĂłw w celu personalizowania wyświetlanych mi reklam i dostosowania do mnie prezentowanych treści marketingowych. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

    Wyrażenie powyższych zgód jest dobrowolne i możesz je w dowolnym momencie wycofać poprzez opcję: "Twoje zgody", dostępnej w prawym, dolnym rogu strony lub poprzez usunięcie "cookies" w swojej przeglądarce dla powyżej strony, z tym, że wycofanie zgody nie będzie miało wpływu na zgodność z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.