Сценарий:
Вие работите като разработчик на SQL Server, трябва да създадете две таблици с връзка първичен - външен ключ. Искате да създадете ограничение на външния ключ с настройка, ако записът ще бъде изтрит от таблица с препратки (таблица с колони с първичен ключ), не трябва да се изтрива от родителска таблица ( таблица с ограничения на външния ключ), вместо това стойността трябва да бъде актуализирана на Null.Решение:
Можем да използваме ON DELETE SET NULL с дефиниция на ограничение на външния ключ, за да приложим горното изискване.Нека изпълним с помощта на скрипта по-долу.
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) Проверете данните в таблиците, като използвате заявка за избор
![]() |
| Как да създадете ограничение на външния ключ с ON DELETE SET NULL в SQL Server |
Нека да изтрием реда от таблицата с препратки (таблица с първичен ключ) и да проверим дали записи все още съществуват в родителската таблица (таблица с ограничения на външния ключ) и стойността на колоната е актуализирана на Null.
--Delete the Record from Referenced Table(PK Column Table)
Delete from dbo.Customer
where CustomerId=1 ![]() |
| Как да използвате опцията ON DELETE SET NULL с ограничение на външния ключ в SQL Server |
Както можем да видим, че записът е изтрит от таблицата с препратки (таблица с първичен ключ), но все още присъства в родителската таблица (таблица с ограничения на външния ключ), но стойността е актуализирана до Null, както се очаква.
Видео демонстрация:Как да създадете ограничение за външен ключ с опция ON DELETE SET NULL в SQL Server

