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
