sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man skapar främmande nyckelbegränsningar med ON DELETE SET NULL-alternativet i SQL Server - SQL Server / TSQL Tutorial Del 81

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
  1. Hur Trunc() fungerar i PostgreSQL

  2. Hur man säkerhetskopierar/exporterar MySQL-databas med PHP

  3. Gå med i en räkningsfråga på gener_series() och hämta nollvärden som '0'

  4. Den heliga graalen att rengöra input och output i php?