Maison >base de données >tutoriel mysql >Comment puis-je ajouter une contrainte de clé étrangère à une table SQLite existante ?
SQLite : ajout d'une clé étrangère à une table existante
Lors de l'interrogation d'une base de données, le maintien de l'intégrité des données est primordial. Les clés étrangères jouent un rôle crucial dans le renforcement des relations entre les tables, garantissant ainsi la validité des références de données. Dans le contexte de SQLite, cependant, certaines limitations existent lorsqu'il s'agit de modifier des tables existantes.
Défi : Ajouter une clé étrangère à une table existante
Considérez le scénario suivant : Vous disposez d'une table SQLite existante nommée "child" avec le schéma suivant :
CREATE TABLE child( id INTEGER PRIMARY KEY, parent_id INTEGER, description TEXT);
Votre objectif est d'établir une clé étrangère contrainte sur la colonne "parent_id", en supposant que les clés étrangères sont déjà activées. Cependant, les méthodes conventionnelles peuvent ne pas suffire.
Solution : Limitations et solutions de contournement
Dans SQLite, l'ajout d'une clé étrangère à une table existante n'est pas directement possible à l'aide de l'option "ALTER TABLE ADD CONSTRAINT". Contrairement à d'autres systèmes de bases de données, SQLite ne prend pas en charge cette variante spécifique d'ALTER TABLE.
La seule solution réalisable est de modifier la table lors de sa création. Vous pouvez supprimer la table "enfant" existante, la recréer avec la contrainte de clé étrangère, puis la repeupler avec les données enregistrées à partir d'une table temporaire :
CREATE TABLE child ( id INTEGER PRIMARY KEY, parent_id INTEGER, description TEXT, FOREIGN KEY (parent_id) REFERENCES parent(id) );
Cette procédure garantit que la contrainte de clé étrangère est réussie établi pour la table "enfant".
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!