How do I add a foreign key to an existing SQLite table?

前端 未结 11 1714
旧时难觅i
旧时难觅i 2020-11-27 12:44

I have the following table:

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

How do I add a forei

11条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-27 12:59

    Create a foreign key to the existing SQLLite table:

    There is no direct way to do that for SQL LITE. Run the below query to recreate STUDENTS table with foreign keys. Run the query after creating initial STUDENTS table and inserting data into the 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) 
    );
    

    Insert data into STUDENTS table.

    Then Add FOREIGN KEY : making BADGE_NO as the foreign key of same STUDENTS table

    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;
    

    we can add the foreign key from any other table as well.

提交回复
热议问题