Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So erstellen Sie eine Fremdschlüsseleinschränkung mit der Option ON DELETE SET NULL in SQL Server - SQL Server / TSQL-Tutorial Teil 81

Szenario:

Sie arbeiten als SQL Server-Entwickler, Sie müssen zwei Tabellen mit Primär-Fremdschlüssel-Beziehung erstellen. Sie möchten eine Fremdschlüsseleinschränkung mit der Einstellung erstellen, ob der Datensatz aus der referenzierten Tabelle (Primärschlüssel-Spaltentabelle) gelöscht werden soll, er sollte nicht aus der übergeordneten Tabelle (Fremdschlüsseleinschränkungstabelle) gelöscht werden, stattdessen sollte der Wert auf Null aktualisiert werden.

Lösung:

Wir können ON DELETE SET NULL mit der Foreign Key Constraint-Definition verwenden, um die obige Anforderung zu implementieren.
Lassen Sie uns mit dem folgenden Skript ausführen.
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)
 
 
 Überprüfen Sie die Daten in Tabellen mit der Auswahlabfrage 
Erstellen einer Fremdschlüsseleinschränkung mit ON DELETE SET NULL in SQL Server


Lassen Sie uns die Zeile aus der referenzierten Tabelle (Primärschlüssel-Spaltentabelle) löschen und prüfen, ob noch Datensätze in der übergeordneten Tabelle (Fremdschlüssel-Einschränkungstabelle) vorhanden sind und der Spaltenwert auf Null aktualisiert wurde.
    --Delete the Record from Referenced Table(PK Column Table)
    Delete from dbo.Customer
    where CustomerId=1

Verwendung der Option ON DELETE SET NULL mit Foreign Key Constraint in SQL Server

Wie wir sehen können, wurde der Datensatz aus der referenzierten Tabelle (Primärschlüssel-Spaltentabelle) gelöscht, ist aber immer noch in der übergeordneten Tabelle (Fremdschlüssel-Einschränkungstabelle) vorhanden, aber der Wert wird wie erwartet auf Null aktualisiert.

Videodemo:So erstellen Sie eine Fremdschlüsselbeschränkung mit der Option ON DELETE SET NULL in SQL Server