Maison >base de données >tutoriel mysql >Comment ajouter une clé étrangère à une table SQLite existante ?

Comment ajouter une clé étrangère à une table SQLite existante ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-05 07:33:401040parcourir

How Do I Add a Foreign Key to an Existing SQLite Table?

Ajout d'une clé étrangère à une table SQLite existante

Défi :

Vous travaillez avec une table SQLite existante , et vous devez ajouter une contrainte de clé étrangère sur un élément particulier column.

Solution :

Contrairement à d'autres implémentations SQL, SQLite ne prend pas en charge la variante ADD CONSTRAINT de la commande ALTER TABLE. Par conséquent, il n'est pas possible d'ajouter directement une contrainte de clé étrangère à une table existante.

Approche alternative :

Pour obtenir le résultat souhaité, vous devez suivre ces étapes :

  1. Enregistrez les données de la table existante dans une table temporaire.
  2. Supprimez l'existant table.
  3. Recréez la table avec la contrainte de clé étrangère incluse.
  4. Insérez les données de la table temporaire dans la nouvelle table.

Exemple SQL pour cela processus :

-- Step 1: Create a temporary table
CREATE TEMPORARY TABLE t_child AS SELECT * FROM child;

-- Step 2: Drop the existing table
DROP TABLE child;

-- Step 3: Recreate the table with the foreign key constraint
CREATE TABLE child (
    id INTEGER PRIMARY KEY,
    parent_id INTEGER,
    description TEXT,
    FOREIGN KEY (parent_id) REFERENCES parent(id)
);

-- Step 4: Insert data back from the temporary table
INSERT INTO child SELECT * FROM t_child;

En exécutant ces étapes, vous créez essentiellement une nouvelle table avec la contrainte de clé étrangère souhaitée tout en préservant les données du tableau original.

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!

Déclaration:
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