Modification de l'action référentielle de clé étrangère
Les contraintes de clé étrangère renforcent l'intégrité des données en établissant des relations entre les tables. Un scénario courant consiste à gérer le comportement lorsqu’un enregistrement référencé est supprimé. Cet article explique comment modifier l'action référentielle, en particulier de ON DELETE CASCADE à ON DELETE RESTRICT.
ON DELETE CASCADE vs. ON DELETE RESTRICT
ON DELETE CASCADE : Lorsqu'un enregistrement parent est supprimé, tous les enregistrements enfants correspondants sont automatiquement supprimés. Ce comportement peut entraîner une perte de données involontaire.
ON DELETE RESTRICT : empêche la suppression d'un enregistrement parent s'il contient des enregistrements enfants. Cela garantit que l'intégrité des données est maintenue.
Commande SQL pour modifier l'action référentielle
La commande SQL suivante modifie l'action référentielle pour une colonne de clé étrangère :
ALTER TABLE <table_name> ADD CONSTRAINT <constraint_name> FOREIGN KEY (<column_name>) REFERENCES <referenced_table_name> ON DELETE <referential_action>
Dans votre cas, le nom_table est "table1", le nom_contrainte est "fk_table2_id", le nom_colonne est "fk_table2_id", le nom_table_référencé est "table2" et l'action_référentielle est "RESTRICT".
Exemple
Supposons que vous ayez deux tables, "table1" et "table2". ":
CREATE TABLE table1 ( id INT NOT NULL, fk_table2_id INT NOT NULL, PRIMARY KEY (id), FOREIGN KEY (fk_table2_id) REFERENCES table2(id) ON DELETE CASCADE ); CREATE TABLE table2 ( id INT NOT NULL, PRIMARY KEY (id) );
Pour changer la contrainte de clé étrangère dans "table1" en ON DELETE RESTRICT, exécutez la commande suivante :
ALTER TABLE table1 ADD CONSTRAINT fk_table2_id FOREIGN KEY (fk_table2_id) REFERENCES table2(id) ON DELETE RESTRICT;
Cela empêchera la suppression de tout enregistrement de "table2" s'il existe encore des enregistrements enfants le référençant dans "table1".
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!