Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come creare un vincolo di chiave esterna con l'opzione ON DELETE SET NULL in SQL Server - Tutorial SQL Server / TSQL Parte 81

Scenario:

Stai lavorando come sviluppatore di SQL Server, devi creare due tabelle con relazione primaria -chiave esterna. Si desidera creare un vincolo di chiave esterna con l'impostazione se il record verrà eliminato dalla tabella di riferimento (tabella della colonna della chiave primaria), non dovrebbe essere eliminato dalla tabella padre (tabella dei vincoli di chiave esterna) ma il valore dovrebbe essere aggiornato su Null.

Soluzione:

Possiamo usare ON DELETE SET NULL con la definizione di vincolo di chiave esterna per implementare il requisito di cui sopra.
Eseguiamo utilizzando lo script seguente.
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)
 
 
 Controllare i dati nelle tabelle utilizzando Seleziona query 
Come creare un vincolo di chiave esterna con ON DELETE SET NULL in SQL Server


Eliminiamo la riga dalla tabella di riferimento (tabella della colonna della chiave primaria) e controlliamo se i record esistono ancora nella tabella principale (tabella dei vincoli della chiave esterna) e il valore della colonna è aggiornato a Null.
    --Delete the Record from Referenced Table(PK Column Table)
    Delete from dbo.Customer
    where CustomerId=1

Come utilizzare l'opzione ON DELETE SET NULL con il vincolo di chiave esterna in SQL Server

Come possiamo vedere, il record viene eliminato dalla tabella di riferimento (tabella della colonna della chiave primaria) ma è ancora presente nella tabella principale (tabella dei vincoli della chiave esterna) ma il valore viene aggiornato a Null come previsto.

Video demo:come creare vincoli di chiave esterna con l'opzione ON DELETE SET NULL in SQL Server