SQLite外來鍵


SQLite Foreign Key語句用於指定一個表中的值也出現在另一個表中。 它在SQLite資料庫中執行強制參照完整性。 被參照的表稱為父表,而具有外來鍵(或參照父表)的表稱為子表。 子表中的外來鍵通常會參照父表中的主鍵。

在SQLite中,只能在CREATE TABLE語句中定義外來鍵。

建立外來鍵

語法

CREATE TABLE table_name  
(  
    column1 datatype [ NULL | NOT NULL ],  
    column2 datatype [ NULL | NOT NULL ],  
    ...  
    CONSTRAINT fk_column  
    FOREIGN KEY (column1, column2, ... column_n)  
    REFERENCES parent_table (column1, column2, ... column_n)  
);

範例:

建立一個以department表作為參照表(父表)擁有外來鍵的 employees 表, employees 表的department_id列參照父表departmentdepartment_id列作為外來鍵。

-- 父表
CREATE TABLE departments  
(
    department_id INTEGER PRIMARY KEY AUTOINCREMENT,  
    department_name VARCHAR  
);  

-- 擁有外來鍵的表
CREATE TABLE employees  
(
    employee_id INTEGER PRIMARY KEY AUTOINCREMENT,  
    last_name VARCHAR NOT NULL,  
    first_name VARCHAR,  
    department_id INTEGER,  
    CONSTRAINT fk_departments  
    FOREIGN KEY (department_id)  
    REFERENCES departments(department_id)  
);

這裡在department表中建立一個主鍵department_id。 然後,在employees表上建立一個名為fk_departments的外來鍵,該department_id欄位參照department表的department_id欄位。