Scénario :
Vous travaillez en tant que développeur SQL Server, vous devez créer deux tables avec la relation clé primaire-étrangère. Vous souhaitez créer une contrainte de clé étrangère avec le paramètre si l'enregistrement sera supprimé de la table référencée (table de colonne de clé primaire), il ne doit pas être supprimé de la table parent (table de contrainte de clé étrangère) à la place, la valeur doit être mise à jour sur Null.Solution :
Nous pouvons utiliser ON DELETE SET NULL avec la définition de contrainte de clé étrangère pour implémenter l'exigence ci-dessus.Exécutons en utilisant le script ci-dessous.
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 DELETE SET NULL ) --insert sample data insert into dbo.Customer (CustomerId,FName, LName,SSN ) valeurs (1,'Aamir','Shahzad','000-000-00') insérées dans dbo.Orders (OrderItemName,OrderItemAmt,Customer_Id) valeurs ('TV',1,1)
Vérifiez les données dans les tables à l'aide de la requête Select
Comment créer une contrainte de clé étrangère avec ON DELETE SET NULL dans SQL Server |
Supprimons la ligne de la table référencée (table de colonne de clé primaire) et vérifions si les enregistrements existent toujours dans la table parent (table de contrainte de clé étrangère) et la valeur de la colonne est mise à jour sur Null.
--Supprimer l'enregistrement de la table référencée (table de colonnes PK) Supprimer de dbo.Customer où CustomerId=1
Comment utiliser l'option ON DELETE SET NULL avec la contrainte de clé étrangère dans SQL Server |
Comme nous pouvons le voir, l'enregistrement est supprimé de la table référencée (table de colonne de clé primaire) mais toujours présent dans la table parent (table de contrainte de clé étrangère), mais la valeur est mise à jour sur Null comme prévu.
Démo vidéo :comment créer une contrainte de clé étrangère avec l'option ON DELETE SET NULL dans SQL Server