Scenariusz:
Pracujesz jako programista SQL Server, musisz utworzyć dwie tabele z relacją podstawowy-klucz obcy. Chcesz utworzyć ograniczenie klucza obcego z ustawieniem, czy rekord zostanie usunięty z tabeli odniesienia (tabela kolumn klucza podstawowego), powinien zostać również usunięty z tabeli nadrzędnej (tabela ograniczeń klucza obcego).Rozwiązanie:
SQL Server pozwala nam użyć ustawienia z ograniczeniem klucza obcego o nazwie On DELETE CASCADE. Jeśli ta reguła zostanie zaimplementowana, za każdym razem, gdy rekord zostanie usunięty z tabeli odniesienia (tabela kolumn klucza podstawowego), zostanie on również usunięty z tabeli nadrzędnej (tabela ograniczeń kluczy obcych).Przetestujmy ten scenariusz za pomocą poniższego skryptu.
USE YourDatabaseName GO CREATE TABLE dbo.Customer ( Customerid INT PRIMARY KEY ,FName VARCHAR(100) ,LName VARCHAR(100) ,SSN VARCHAR(10) ) CREATE TABLE dbo.Orders ( OrderId INT Identity(1, 1) ,OrderitemName VARCHAR(50) ,OrderItemAmt INT ,Customer_id INT FOREIGN KEY REFERENCES Customer(CustomerId) ON DELETE CASCADE ) --insert sample data insert into dbo.Customer (CustomerId,FName, LName,SSN) values (1,'Aamir','Shahzad','000-000-00')
Sprawdź dane w tabelach za pomocą zapytania wybierającego.
Jak włączyć opcję ON Delete CASCADE z ograniczeniem klucza obcego w SQL Server |
Usuńmy wiersz z tabeli, do której istnieje odwołanie (tabela kolumn kluczy podstawowych) i zobaczmy, czy usuwa się również z tabeli nadrzędnej (tabela ograniczeń kluczy obcych)
--Delete the Record from Referenced Table(PK Column Table) Delete from dbo.Customer where CustomerId=1
Sprawdź ponownie tabele, aby zobaczyć, czy rekord został usunięty z obu tabel z powodu ON Delete Cascade rule on Foreign Key Constraint.
Jak używać ON Delete Cascade do usuwania rekordów z wielu tabel w tabeli SQL Server |
Jak widać, rekordy są usuwane z obu tabel ze względu na regułę ON DELETE CASCADE ograniczenia klucza obcego.
Prezentacja wideo:Jak utworzyć ograniczenie klucza obcego za pomocą funkcji ON DELETE CASCADE w programie SQL Server