Dans la gestion de bases de données, les clés étrangères renforcent l'intégrité référentielle en reliant les données entre les tables. Par défaut, la plupart des systèmes de bases de données configurent des clés étrangères avec le comportement "ON DELETE CASCADE", qui supprime les enregistrements enfants lorsque leurs enregistrements parents sont supprimés.
Cependant, il existe des scénarios dans lesquels vous souhaiterez peut-être modifier ce comportement en " SUR SUPPRESSION RESTRICTION." Cette modification empêche la suppression des enregistrements parents s'ils ont des enregistrements enfants existants.
Pour modifier l'action référentielle, vous devez d'abord supprimer la contrainte existante. Utilisez la syntaxe suivante :
ALTER TABLE table_name DROP FOREIGN KEY constraint_name;
Remplacez "table_name" par le nom de la table contenant la clé étrangère et "constraint_name" par le nom de la contrainte existante.
Une fois l'ancienne contrainte supprimée, vous pouvez en ajouter une nouvelle avec l'action référentielle souhaitée. Utilisez la syntaxe suivante :
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES referenced_table(referenced_column) ON DELETE RESTRICT;
Remplacez "table_name" par la même table que précédemment, "constraint_name" par le nom de la nouvelle contrainte, "column_name" par la colonne de clé étrangère, "referenced_table" par la table référencée , et "referenced_column" avec la colonne référencée dans la table référencée.
Considérez la structure de tableau suivante :
CREATE TABLE UserDetails ( Detail_id INT PRIMARY KEY, User_id INT NOT NULL, FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE CASCADE );
Pour modifier l'action référentielle en "ON DELETE RESTRICT", suivez ces étapes :
Supprimez l'existant contrainte :
ALTER TABLE UserDetails DROP FOREIGN KEY FK_User_id;
Ajouter la nouvelle contrainte :
ALTER TABLE UserDetails ADD CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE RESTRICT;
Après ces modifications, suppression d'un enregistrement dans la table "Utilisateurs" ne répercutera plus la suppression sur la table "UserDetails". La suppression sera restreinte s'il existe des enregistrements enfants dans "UserDetails" qui font référence à l'enregistrement parent dans "Utilisateurs".
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!