Сценарий:
Вие работите като разработчик на 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