主键不允许使用唯一替换功能

时间:2016-01-14 10:51:25

标签: sqlite

CREATE TABLE resource_sync 
(
     _id INTEGER UNIQUE ON CONFLICT REPLACE PRIMARY KEY, 
     status_id INTEGER, 
     result_id INTEGER
);

如果插入两个相等的_id值,SQLite将抛出异常:

  

[13:39:48]在数据库上执行SQL查询时出错' test':UNIQUE   约束失败:resource_sync._id

但是,如果从表创建SQL中删除主键声明,它允许进行所需的替换。

为什么?

感谢。

1 个答案:

答案 0 :(得分:1)

主键上忽略UNIQUE。

正确的语法,如documentation所示,是:

CREATE TABLE resource_sync
(
     _id INTEGER PRIMARY KEY ON CONFLICT REPLACE,
     status_id INTEGER,
     result_id INTEGER
);