如何在sqlite中添加外键关系

时间:2013-12-08 08:46:56

标签: database sqlite foreign-keys relational-database foreign-key-relationship

有两个表

create table A(
    id integer primary key autoincrement,
    subject text not null,
);

create table B(
    id integer primary key autoincrement,
    text integer references A(id)
        on delete restrict
        deferrable initially deferred
        unique
);

B表格行应与A相关联。 所以,我将B.text添加了一个外键给A ..

我在表A中添加了几个pk值为1和2的随机数据 现在,我尝试创建B表数据,其text值引用5,但A中不存在,但仍可存储..

为什么这样做以及如何解决?

1 个答案:

答案 0 :(得分:3)

您必须启用外键支持:

PRAGMA foreign_keys=ON;

参考:http://www.sqlite.org/foreignkeys.html

示例:

sqlite> create table A(
   ...>     id integer primary key autoincrement,
   ...>     subject text not null
   ...> );
sqlite> 
sqlite> create table B(
   ...>     id integer primary key autoincrement,
   ...>     text integer references A(id)
   ...>         on delete restrict
   ...>         deferrable initially deferred
   ...>         unique
   ...> );
sqlite> insert into a values(1,1),(2,2);
sqlite> insert into b(text) values(3);
sqlite> pragma foreign_keys=on;
sqlite> insert into b(text) values(4);
Error: foreign key constraint failed
sqlite>