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