Maison > base de données > tutoriel mysql > Pourquoi les contraintes de clé étrangère SQLite3 semblent-elles échouer les INSERT jusqu'à ce que « PRAGMA Foreign_keys = ON ; » soit utilisé ?

Pourquoi les contraintes de clé étrangère SQLite3 semblent-elles échouer les INSERT jusqu'à ce que « PRAGMA Foreign_keys = ON ; » soit utilisé ?

Linda Hamilton
Libérer: 2025-01-04 18:49:40
original
946 Les gens l'ont consulté

Why Do SQLite3 Foreign Key Constraints Seem to Fail INSERTs Until `PRAGMA foreign_keys = ON;` is Used?

Contraintes de clé étrangère SQLite3 : pourquoi les INSERT réussissent sans références

Bien que SQLite3 prenne en charge les contraintes de clé étrangère, un problème survient lors de la tentative d'insertion enregistre dans une table enfant sans respecter les contraintes. Ce comportement énigmatique peut laisser perplexe.

Pour percer ce mystère, examinons le script SQL fourni. Il établit deux tables : "Persons" et "Commandes", où "P_Id" dans "Commandes" est une clé étrangère faisant référence à la clé primaire dans "Persons".

Lors de l'insertion des données dans la table "Commandes", même avec une table "Personnes" vide, l'insertion semble se dérouler sans erreur. En effet, les contraintes de clé étrangère ne sont pas automatiquement activées dans SQLite3.x.

Pour rectifier cette anomalie et appliquer l'intégrité des clés étrangères, vous devez exécuter la requête "PRAGMA" suivante à chaque fois que vous établissez une connexion à votre base de données SQLite :

PRAGMA foreign_keys = ON;
Copier après la connexion

En émettant cette directive, SQLite3 appliquera avec diligence toutes les contraintes de clé étrangère, empêchant les insertions qui violent celles-ci. contraintes.

Cette particularité découle de la compatibilité héritée de SQLite avec sa version antérieure, SQLite 2.x. Cependant, dans SQLite 4.x, les contraintes de clé étrangère seront activées par défaut, éclipsant ce comportement bizarre.

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