如何在sqlite中添加外键关系

3

这里有两个表格

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表中添加了几个随机数据,其主键值为1和2。 现在,我尝试创建B表数据,并使用text值引用A中不存在的5,但它仍然可以存储。

为什么这行得通,如何修复它?

1个回答

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> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接