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.
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