Scénario :
Dans les articles précédents, nous apprenons que si nous avons une contrainte de clé étrangère avec le paramètre par défaut et que nous essayons de mettre à jour la valeur dans la colonne de la table de référence qui est utilisée comme colonne de référence dans la contrainte de clé étrangère, nous obtenons une erreur. Nous avons discuté de plusieurs façons de gérer la situation, veuillez consulter ce lien.La contrainte de clé étrangère offre la possibilité de définir l'action en cascade, nous pouvons créer une contrainte de clé étrangère avec la mise à jour en cascade.
Si les paramètres de mise à jour en cascade sont utilisés, lorsque nous mettons à jour la valeur dans la table référencée, cela mettra également à jour la valeur dans la colonne de la table parent (table de clé étrangère).
Testons ce scénario. Créez deux tables dbo.Customer et dbo.Orders avec une relation de clé étrangère par un script donné
USE YourDatabaseNameGOCREATE 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 insérer dans dbo.Customer (CustomerId,FName, LName,SSN) valeurs (1,'Aamir','Shahzad','000-000-00') insérer dans dbo.Orders (OrderItemName,OrderItemAmt,Customer_Id) valeurs ('TV ',1,1)
Vérifions les données dans les tables en utilisant select query
Comment créer une contrainte de clé étrangère avec Update Cascade dans SQL Server |
Exécutons notre instruction de mise à jour sur CustomerId dans la table dbo.Customer et voyons si elle met également à jour la valeur de la colonne dans dbo.Orders pour Customer_id.
update dbo.Customer set Customerid=100
Vérifions à nouveau les données dans nos tableaux
Comment activer la mise à jour en cascade avec contrainte de clé étrangère dans SQL Server |
Comme nous pouvons le voir, la valeur est également mise à jour dans la colonne dbo.Orders.Customer_id.
Démo vidéo :Comment créer une contrainte de clé étrangère avec ON UPDATE CASCADE dans SQL Server