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), nie powinien być usuwany z tabeli nadrzędnej (tabela ograniczeń klucza obcego), zamiast tego wartość powinna zostać zaktualizowana do wartości Null.Rozwiązanie:
Możemy użyć ON DELETE SET NULL z definicją ograniczenia klucza obcego, aby zaimplementować powyższe wymaganie.Wykonajmy 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 SET NULL
)
--insert sample data
insert into dbo.Customer
(CustomerId,FName, LName,SSN)
values
(1,'Aamir','Shahzad','000-000-00')
insert into dbo.Orders
(OrderItemName,OrderItemAmt,Customer_Id)
values ('TV',1,1) Sprawdź dane w tabelach za pomocą zapytania wybierającego
![]() |
| Jak utworzyć ograniczenie klucza obcego za pomocą ON DELETE SET NULL w SQL Server |
Usuńmy wiersz z tabeli odniesienia (tabela kolumn klucza podstawowego) i sprawdź, czy rekordy nadal istnieją w tabeli nadrzędnej (tabela ograniczeń kluczy obcych), a wartość kolumny została zaktualizowana do wartości Null.
--Delete the Record from Referenced Table(PK Column Table)
Delete from dbo.Customer
where CustomerId=1 ![]() |
| Jak używać opcji ON DELETE SET NULL z ograniczeniem klucza obcego w SQL Server |
Jak widać, rekord został usunięty z tabeli odniesienia (tabela kolumn klucza podstawowego), ale nadal jest obecny w tabeli nadrzędnej (tabela ograniczeń kluczy obcych), ale wartość jest aktualizowana do wartości Null zgodnie z oczekiwaniami.
Wideo demonstracyjne:Jak utworzyć ograniczenie klucza obcego z opcją ON DELETE SET NULL w SQL Server

