Maison > base de données > tutoriel mysql > Comment changer ON DELETE CASCADE en ON DELETE RESTRICT pour les clés étrangères ?

Comment changer ON DELETE CASCADE en ON DELETE RESTRICT pour les clés étrangères ?

Patricia Arquette
Libérer: 2024-11-29 18:18:16
original
675 Les gens l'ont consulté

How to Change ON DELETE CASCADE to ON DELETE RESTRICT for Foreign Keys?

Modification de l'action référentielle pour les clés étrangères : un guide étape par étape

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.

Étape 1 : suppression de l'ancienne contrainte

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;
Copier après la connexion

Remplacez "table_name" par le nom de la table contenant la clé étrangère et "constraint_name" par le nom de la contrainte existante.

Étape 2 : Ajout de la nouvelle Contrainte

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;
Copier après la connexion

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.

Exemple : Modification de ON DELETE CASCADE vers ON DELETE RESTRICT

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
);
Copier après la connexion

Pour modifier l'action référentielle en "ON DELETE RESTRICT", suivez ces étapes :

  1. Supprimez l'existant contrainte :

    ALTER TABLE UserDetails DROP FOREIGN KEY FK_User_id;
    Copier après la connexion
  2. Ajouter la nouvelle contrainte :

    ALTER TABLE UserDetails ADD CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE RESTRICT;
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal