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

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

Scenario:

Nei post precedenti, apprendiamo che se abbiamo Vincolo di chiave esterna con l'impostazione predefinita e proviamo ad aggiornare il valore nella colonna nella tabella di riferimento che viene utilizzata come colonna di riferimento in Vincolo di chiave esterna, otteniamo un errore. Abbiamo discusso diversi modi per gestire la situazione, controlla questo link.
Foreign Key Constraint fornisce l'opzione per impostare l'azione Cascading, possiamo creare Foreign Key Constraint con Cascading Update.
Se vengono utilizzate le impostazioni di Aggiorna a catena, quando aggiorniamo il valore nella tabella di riferimento , aggiornerà anche il valore nella colonna della tabella padre (tabella chiave esterna).
Testiamo questo scenario. Crea due tabelle dbo.Customer e dbo.Orders con relazione chiave esterna in base allo script specificato

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 UPDATE CASCADE
    )


    --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)
 
 
 Controlliamo i dati nelle tabelle utilizzando select query
Come creare un vincolo di chiave esterna con Update Cascade in SQL Server


Eseguiamo la nostra dichiarazione di aggiornamento su CustomerId nella tabella dbo.Customer e vediamo se aggiorna anche il valore della colonna in dbo.Orders per Customer_id.
    update dbo.Customer
    set Customerid=100
 
 Controlliamo nuovamente i dati nelle nostre tabelle 
Come abilitare l'aggiornamento a catena con vincolo di chiave esterna in SQL Server

Come possiamo vedere, il valore viene aggiornato anche nella colonna dbo.Orders.Customer_id.


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