201 votes

Comment ajouter une clé étrangère à une table sqlite (3.6.21) existante ?

J'ai le tableau suivant :

CREATE TABLE child( 
  id INTEGER PRIMARY KEY, 
  parent_id INTEGER, 
  description TEXT);

Comment ajouter une contrainte de clé étrangère sur parent_id ? Supposons que les clés étrangères sont activées.

La plupart des exemples supposent que vous créez la table. J'aimerais ajouter la contrainte à une table existante.

1 votes

La commande ALTER de SQLite ne prend en charge que "renommer la table" et "ajouter une colonne". Cependant, nous pouvons apporter d'autres modifications arbitraires au format d'une table en utilisant une simple séquence d'opérations. Vérifiez ma réponse

5voto

Jamshy EK Points 21

Vous pouvez essayer ceci :

ALTER TABLE [Child] ADD COLUMN column_name INTEGER REFERENCES parent_table_name(column_id);

3voto

Baso Points 132

Si vous utilisez le module complémentaire sqlite-manager de Firefox, vous pouvez procéder comme suit :

Au lieu de supprimer et de recréer la table, il suffit de la modifier comme suit.

Dans la zone de texte Columns, cliquez avec le bouton droit de la souris sur le nom de la dernière colonne répertoriée pour faire apparaître le menu contextuel et sélectionnez Edit Column. Notez que si la dernière colonne de la définition de la TABLE est la CLÉ PRIMAIRE, il faudra d'abord ajouter une nouvelle colonne, puis modifier le type de colonne de la nouvelle colonne afin d'ajouter la définition de la CLÉ FOREIGN. Dans le champ Type de colonne, ajoutez une virgule et le caractère

FOREIGN KEY (parent_id) REFERENCES parent(id)

définition après le type de données. Cliquez sur le bouton Modifier, puis sur le bouton Oui de la boîte de dialogue Opération dangereuse.

Référence : Gestionnaire Sqlite

3voto

Gaurav Vanani Points 101

Si vous utilisez Db Browser pour sqlite, il vous sera facile de modifier la table. Vous pouvez ajouter une clé étrangère dans une table existante sans écrire de requête.

  • Ouvrez votre base de données dans le navigateur Db,
  • Il suffit de faire un clic droit sur le tableau et de cliquer sur modifier,
  • Là, faites défiler jusqu'à la colonne des clés étrangères,
  • double-cliquez sur le champ que vous voulez modifier,
  • Ensuite, sélectionnez la table et son champ et cliquez sur ok.

c'est tout. Vous avez réussi à ajouter une clé étrangère dans une table existante.

2 votes

Je peux le faire avec DB Browser version 3.10.1, mais les informations ne sont pas enregistrées. Si je fais les modifications, clique sur OK et ensuite clique à nouveau sur "modifier", les modifications ont disparu. Avec quelle version cela fonctionne-t-il ?

2voto

passionatedevops Points 339

Créer une clé étrangère à la table SQLLite existante :

Il n'y a pas de moyen direct de le faire pour SQL LITE. Exécutez la requête ci-dessous pour recréer la table STUDENTS avec des clés étrangères. Exécutez la requête après avoir créé la table STUDENTS initiale et inséré des données dans la table.

CREATE TABLE    STUDENTS    (       
    STUDENT_ID  INT NOT NULL,   
    FIRST_NAME  VARCHAR(50) NOT NULL,   
    LAST_NAME   VARCHAR(50) NOT NULL,   
    CITY    VARCHAR(50) DEFAULT NULL,   
    BADGE_NO    INT DEFAULT NULL
    PRIMARY KEY(STUDENT_ID) 
);

Insérez des données dans la table STUDENTS.

Puis ajouter FOREIGN KEY : en faisant de BADGE_NO la clé étrangère de la même table STUDENTS

BEGIN;
CREATE TABLE STUDENTS_new (
    STUDENT_ID  INT NOT NULL,   
    FIRST_NAME  VARCHAR(50) NOT NULL,   
    LAST_NAME   VARCHAR(50) NOT NULL,   
    CITY    VARCHAR(50) DEFAULT NULL,   
    BADGE_NO    INT DEFAULT NULL,
    PRIMARY KEY(STUDENT_ID) ,
    FOREIGN KEY(BADGE_NO) REFERENCES STUDENTS(STUDENT_ID)   
);
INSERT INTO STUDENTS_new SELECT * FROM STUDENTS;
DROP TABLE STUDENTS;
ALTER TABLE STUDENTS_new RENAME TO STUDENTS;
COMMIT;

nous pouvons ajouter la clé étrangère de n'importe quelle autre table également.

0voto

szilkov Points 9

Au cas où quelqu'un d'autre aurait besoin d'informations sur SQLiteStudio, vous pouvez facilement le faire à partir de son interface graphique.

Double-cliquez sur la colonne et double-cliquez sur la ligne de clé étrangère, puis cochez clé étrangère et cliquez sur configurer. Vous pouvez ajouter la colonne de référence, puis cliquer sur OK dans chaque fenêtre.

Enfin, cliquez sur la coche verte pour valider les changements dans la structure.

SOYEZ CONSCIENT QUE CES ÉTAPES CRÉENT DES SCRIPTS SQL QUI SUPPRIMENT LA TABLE ET LA RECRÉENT ! !!

Sauvegardez vos données de la base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X