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