Scenario:
Du arbetar som SQL Server-utvecklare, du måste skapa två tabeller med Primär - Utländsk nyckelrelation. Du vill skapa Foreign Key Constraint med inställningen om posten kommer att raderas från refererad tabell (Primary Key Column Table), den ska inte tas bort från överordnad tabell ( Foreign Key Constraint Table) istället ska värdet uppdateras till Null.Lösning:
Vi kan använda ON DELETE SET NULL med Foreign Key Constraint definition för att implementera ovanstående krav.Låt oss utföra genom att använda nedanstående skript.
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)
Kontrollera data i tabeller med hjälp av Välj-fråga
Hur man skapar en främmande nyckelbegränsning med ON DELETE SET NULL i SQL Server |
Låt oss ta bort raden från refererad tabell (tabell med primär nyckelkolumn) och kontrollera om poster fortfarande finns i överordnad tabell (tabell med utländsk nyckel) och kolumnvärdet uppdateras till Null.
--Delete the Record from Referenced Table(PK Column Table) Delete from dbo.Customer where CustomerId=1
Hur man använder alternativet ON DELETE SET NULL med Foreign Key Constraint i SQL Server |
Som vi kan se att posten har raderats från refererad tabell (Primärnyckelkolumntabell) men fortfarande finns i överordnad tabell (utländsk nyckelbegränsningstabell) men värdet uppdateras till Null som förväntat.
Videodemo:Hur man skapar en främmande nyckelbegränsning med ON DELETE SET NULL-alternativet i SQL Server