一尘不染

SQLite外键

sql

我正在按照http://www.sqlite.org/foreignkeys.html上SQLite文档中的说明进行操作,但是我尝试添加外键失败。这是我的创建语句:

CREATE TABLE 
    checklist (
        _id INTEGER PRIMARY KEY AUTOINCREMENT, 
        checklist_title TEXT,
        description TEXT,
        created_on INTEGER, 
        modified_on INTEGER
    );

CREATE TABLE 
    item (
        _id INTEGER PRIMARY KEY AUTOINCREMENT,  
        FOREIGN KEY(checklist_id) REFERENCES checklist(_id), 
        item_text TEXT, item_hint TEXT, 
        item_order INTEGER, 
        created_on INTEGER, 
        modified_on INTEGER
    );

第一张桌子做得很好。该错误发生在第二条语句中。我已经尝试过将两个查询包装在事务中而没有包装。这是错误:

外键定义(代码1)中的未知列“ checklist_id”:,正在编译:CREATE TABLE项(_id
INTEGER主键自动增加,外键(checklist_id)参考核对清单(_id),item_text TEXT,item_hint
TEXT,item_order INTEGER,created_on INTEGER ,modified_on INTEGER)


阅读 144

收藏
2021-03-17

共1个答案

一尘不染

checklist_id INTEGER在将其添加为外键之前,您仍然必须先创建该列。

因此它将是:

CREATE TABLE 
    checklist (
        _id INTEGER PRIMARY KEY AUTOINCREMENT, 
        checklist_title TEXT,
        description TEXT,
        created_on INTEGER, 
        modified_on INTEGER
    );

CREATE TABLE 
    item (
        _id INTEGER PRIMARY KEY AUTOINCREMENT,  
        checklist_id INTEGER,
        item_text TEXT, 
        item_hint TEXT, 
        item_order INTEGER, 
        created_on INTEGER, 
        modified_on INTEGER,
        FOREIGN KEY(checklist_id) REFERENCES checklist(_id)
    );
2021-03-17