Scenarie:
Du arbejder som SQL Server-udvikler, du skal oprette to tabeller med Primary-Foreign Key Relationship. Du vil oprette Foreign Key Constraint med indstilling, hvis posten slettes fra referencetabel (primær nøglekolonnetabel), den skal ikke slettes fra overordnet tabel (foreign Key Constraint-tabel), i stedet skal værdien opdateres til Null.Løsning:
Vi kan bruge ON DELETE SET NULL med Foreign Key Constraint definition til at implementere ovenstående krav.Lad os udføre ved at bruge nedenstående script.
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)
Tjek dataene i tabeller ved at bruge Vælg forespørgsel
Sådan opretter du fremmednøglebegrænsning med ON DELETE SET NULL i SQL Server |
Lad os slette rækken fra referencetabel (tabel med primær nøglekolonne) og kontrollere, om poster stadig eksisterer i overordnet tabel (tabel med fremmednøglebegrænsninger), og kolonneværdien er opdateret til Null.
--Delete the Record from Referenced Table(PK Column Table) Delete from dbo.Customer where CustomerId=1
Sådan bruges ON DELETE SET NULL-indstillingen med Foreign Key Constraint i SQL Server |
Som vi kan se, er posten slettet fra referencetabel (tabel med primær nøglekolonne), men stadig til stede i overordnet tabel (tabel med udenlandsk nøglebegrænsning), men værdien er opdateret til Null som forventet.
Videodemo:Sådan oprettes en begrænsning af fremmednøgle med ON SLET SET NULL-indstillingen i SQL Server