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

Come creare un vincolo di chiave esterna con ON DELETE CASCADE in SQL Server - Tutorial SQL Server / TSQL Parte 80

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), dovrebbe essere eliminato anche dalla tabella padre (tabella dei vincoli di chiave esterna).

Soluzione:

SQL Server ci consente di utilizzare l'impostazione con il vincolo della chiave esterna chiamato On DELETE CASCADE. Se questa regola viene implementata, ogni volta che il record viene eliminato dalla tabella di riferimento (tabella della colonna della chiave primaria), verrà eliminato anche dalla tabella principale (tabella dei vincoli della chiave esterna).
Testiamo questo scenario con 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 CASCADE
    )

    --insert sample data
     insert into dbo.Customer 
    (CustomerId,FName, LName,SSN)
     values
    (1,'Aamir','Shahzad','000-000-00')
 
 
 Controlla i dati nelle tabelle utilizzando select query.
Come abilitare ON Elimina regola CASCADE con vincolo di chiave esterna in SQL Server

Eliminiamo la riga dalla tabella di riferimento (tabella della colonna della chiave primaria) e vediamo se viene eliminata anche dalla tabella padre (tabella dei vincoli di chiave esterna)

    --Delete the Record from Referenced Table(PK Column Table)
    Delete from dbo.Customer
    where CustomerId=1


Controlla di nuovo le tabelle per vedere se il record è stato eliminato da entrambe le tabelle a causa di ON Elimina regola a cascata sul vincolo di chiave esterna.
Come utilizzare ON Delete Cascade per eliminare record da più tabelle nella tabella di SQL Server

Come possiamo vedere, i record vengono eliminati da entrambe le tabelle a causa della regola ON DELETE CASCADE del vincolo di chiave esterna.

Video demo:come creare un vincolo di chiave esterna con ON DELETE CASCADE in SQL Server