sqlite ON CONFLICT子句如何在列定义中起作用?

时间:2017-03-06 12:52:45

标签: sqlite

我有以下示例:

sqlite> create table FILES (FILENAME VARCHAR(1024) PRIMARY KEY NOT NULL ON CONFLICT IGNORE);

有了这个,我从文档中收集出一个违反这个主键的插入将被忽略。

但是没有发生,2。插入错误。

sqlite> insert into files values ('fileA');
sqlite> insert into files values ('fileA');
Error: UNIQUE constraint failed: FILES.FILENAME

那么,ON CONFLICT IGNORE如何在上表中工作,它的目的是什么?

(注意 - 我知道我也可以运行insert or ignore into files values ('fileA');,这将被忽略,但问题是关于列定义。)

1 个答案:

答案 0 :(得分:4)

冲突解决条款适用于NOT NULL约束,因此它只会忽略NULL值。

要忽略重复项,请在PRIMARY KEY约束后直接添加ON CONFLICT IGNORE。