


Impossible de supprimer ou de mettre à jour une ligne parent : une contrainte de clé étrangère échoue - Comment résoudre l'erreur MySQL : la ligne parent a une contrainte de clé étrangère
Comment résoudre l'erreur MySQL : la ligne parent a des contraintes de clé étrangère, des exemples de code spécifiques sont nécessaires
Lors du développement à l'aide d'une base de données MySQL, nous rencontrons souvent un message d'erreur : "Impossible de supprimer ou de mettre à jour une ligne parent : une clé étrangère la contrainte échoue" (Impossible de supprimer ou de mettre à jour la ligne parent : une contrainte de clé étrangère existe).
Ce message d'erreur apparaît généralement lorsque nous essayons de supprimer ou de mettre à jour une ligne référencée par des enregistrements dans d'autres tables. Dans ce cas, MySQL empêchera l'opération de suppression ou de mise à jour sur la ligne parent en fonction de la contrainte de clé étrangère. Afin de résoudre ce problème, nous devons gérer les contraintes de clé étrangère en conséquence.
Ce qui suit vous fournira quelques méthodes pour résoudre ce problème, avec des exemples de code spécifiques.
- Supprimer les données de la ligne enfant associées
Avant d'effectuer une opération de suppression ou de mise à jour, nous devons supprimer les données de la ligne enfant liées à la ligne parent. Ceci peut être réalisé en définissant l'attribut ON DELETE CASCADE de la clé étrangère. Lorsqu'une ligne parent est supprimée, toutes les lignes enfants qui font référence à la ligne parent sont également automatiquement supprimées.
Par exemple, supposons que nous ayons deux tables : orders
et order_items
. Le champ order_id
de la table order_items
est une référence de clé étrangère à la commande dans la table orders
. Lorsque nous souhaitons supprimer une commande dans la table orders
, nous devons d'abord supprimer les données des sous-lignes liées à la commande dans la table order_items
. orders
和order_items
。order_items
表的order_id
字段是对orders
表中订单的外键引用。当我们要删除orders
表中的某个订单时,必须先删除order_items
表中与该订单相关的子行数据。
具体代码示例如下:
CREATE TABLE orders( id INT PRIMARY KEY, order_name VARCHAR(50) ); CREATE TABLE order_items( id INT PRIMARY KEY, order_id INT, item_name VARCHAR(50), FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE );
在上面的代码中,我们在创建order_items
表时将order_id
字段设置为对orders
表的外键约束,并指定了ON DELETE CASCADE。这样,当我们删除orders
表中的某个订单时,与该订单相关的order_items
表中的记录也会被自动删除。
- 解除外键约束后删除
如果我们不希望设置ON DELETE CASCADE,或者无法删除与父行相关的子行数据,我们可以先解除外键约束,然后再进行删除操作。
具体代码示例如下:
ALTER TABLE order_items DROP FOREIGN KEY fk_order_items_order_id;
上面的代码中,我们使用ALTER TABLE
语句来删除order_items
表中对orders
表的外键约束。
接下来,我们可以执行删除操作,如下所示:
DELETE FROM orders WHERE id = 1;
在执行上面的删除语句时,MySQL将不再验证与被删除行相关的外键约束,从而成功删除父行。
- 更新父行的值
在某些情况下,我们可能只想更新父行的值而不是删除它。在这种情况下,我们需要先更新与该父行相关的所有子行的外键引用,然后再更新父行的值。
具体代码示例如下:
UPDATE order_items SET order_id = 2 WHERE order_id = 1; UPDATE orders SET id = 2 WHERE id = 1;
在上面的代码中,我们首先更新order_items
表中的外键引用,将之前引用父行ID为1的记录的order_id
字段值更新为2。然后,我们再更新orders
rrreee
Dans le code ci-dessus, nous définissons le champorder_id
sur orders
lors de la création du order_items
table Contraintes de clé étrangère sur la table et ON DELETE CASCADE est spécifié. De cette façon, lorsque nous supprimons une commande dans la table orders
, les enregistrements de la table order_items
liés à la commande seront également automatiquement supprimés.
- Supprimer après avoir libéré la contrainte de clé étrangère
Si nous ne voulons pas définir ON DELETE CASCADE, ou si nous ne pouvons pas supprimer les données de la ligne enfant liées à la ligne parent, nous pouvons d'abord libérer la contrainte de clé étrangère puis supprimez-le.
🎜🎜L'exemple de code spécifique est le suivant : 🎜rrreee🎜Dans le code ci-dessus, nous utilisons l'instructionALTER TABLE
pour supprimer la table orders
dans le order_items
contraintes de clé étrangère de la table. 🎜🎜Ensuite, nous pouvons effectuer une opération de suppression comme indiqué ci-dessous : 🎜rrreee🎜 Lors de l'exécution de l'instruction delete ci-dessus, MySQL ne validera plus les contraintes de clé étrangère liées à la ligne supprimée, supprimant ainsi avec succès la ligne parent. 🎜- 🎜Mettre à jour la valeur de la ligne parent🎜Dans certains cas, nous pouvons simplement souhaiter mettre à jour la valeur de la ligne parent au lieu de la supprimer. Dans ce cas, nous devons mettre à jour les références de clé étrangère de toutes les lignes enfants liées à cette ligne parent avant de mettre à jour la valeur de la ligne parent. 🎜🎜🎜L'exemple de code spécifique est le suivant : 🎜rrreee🎜Dans le code ci-dessus, nous mettons d'abord à jour la référence de clé étrangère dans la table
order_items
vers le order_id qui faisait précédemment référence à l'enregistrement dont le parent L'ID de ligne est 1
La valeur du champ est mise à jour à 2. Ensuite, nous mettons à jour la valeur de l'enregistrement avec l'ID 1 dans la table orders
à 2. 🎜🎜De cette façon, nous avons réussi à mettre à jour la valeur de la ligne parent. 🎜🎜Résumé : 🎜🎜Lorsque nous rencontrons une erreur MySQL : "Impossible de supprimer ou de mettre à jour une ligne parent : une contrainte de clé étrangère échoue", nous pouvons supprimer ou mettre à jour les données de la ligne enfant liées à la ligne parent en supprimant la contrainte de clé étrangère. La valeur de la ligne parent pour résoudre ce problème. Choisissez la méthode de traitement correspondante en fonction des besoins spécifiques de l'entreprise et des conditions de fonctionnement des données, et écrivez un code raisonnable pour gérer le problème des contraintes de clé étrangère. 🎜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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

Créez une base de données à l'aide de NAVICAT Premium: Connectez-vous au serveur de base de données et entrez les paramètres de connexion. Cliquez avec le bouton droit sur le serveur et sélectionnez Créer une base de données. Entrez le nom de la nouvelle base de données et le jeu de caractères spécifié et la collation. Connectez-vous à la nouvelle base de données et créez le tableau dans le navigateur d'objet. Cliquez avec le bouton droit sur le tableau et sélectionnez Insérer des données pour insérer les données.

MySQL est un système de gestion de la base de données relationnel open source, principalement utilisé pour stocker et récupérer les données rapidement et de manière fiable. Son principe de travail comprend les demandes des clients, la résolution de requête, l'exécution des requêtes et les résultats de retour. Des exemples d'utilisation comprennent la création de tables, l'insertion et la question des données et les fonctionnalités avancées telles que les opérations de jointure. Les erreurs communes impliquent la syntaxe SQL, les types de données et les autorisations, et les suggestions d'optimisation incluent l'utilisation d'index, les requêtes optimisées et la partition de tables.

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

Redis utilise une architecture filetée unique pour fournir des performances élevées, une simplicité et une cohérence. Il utilise le multiplexage d'E / S, les boucles d'événements, les E / S non bloquantes et la mémoire partagée pour améliorer la concurrence, mais avec des limites de limitations de concurrence, un point d'échec unique et inadapté aux charges de travail à forte intensité d'écriture.

MySQL est choisi pour ses performances, sa fiabilité, sa facilité d'utilisation et son soutien communautaire. 1.MySQL fournit des fonctions de stockage et de récupération de données efficaces, prenant en charge plusieurs types de données et opérations de requête avancées. 2. Adoptez l'architecture client-serveur et plusieurs moteurs de stockage pour prendre en charge l'optimisation des transactions et des requêtes. 3. Facile à utiliser, prend en charge une variété de systèmes d'exploitation et de langages de programmation. 4. Avoir un solide soutien communautaire et fournir des ressources et des solutions riches.

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.
