首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQLite中使用冲突策略替换时保留主键的值

在SQLite中使用冲突策略替换时保留主键的值
EN

Stack Overflow用户
提问于 2018-11-13 09:00:17
回答 1查看 213关注 0票数 0

创建了一个SQLite表,如下所示

代码语言:javascript
复制
CREATE TABLE event 
(_id INTEGER PRIMARY KEY AUTOINCREMENT, 
event_id TEXT NOT NULL, 
instance_id TEXT NOT NULL, 
...., 
UNIQUE (event_id, instance_id) ON CONFLICT REPLACE)

现在,当插入时发生冲突时,SQLite将该行替换为新行,这反过来会更改我的主键_id

当主键被替换时,我不想改变它(关于冲突)。我该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-13 10:08:48

ON REPLACE用冲突删除行并插入一个新的行。所以,是的,rowid将会改变,除非它包含在被插入的值中。

如果使用sqlit3.24或更高版本,则可以使用不同类型的冲突解决方案,允许您在违反特定唯一约束时只更新某些列。它被称为乌塞特。这是你对这个案子最好的选择。

另一个选项包括尝试插入、检测唯一性错误和执行更新。只有在老版本的情况下,我才会走这条路。

编辑:你真的需要自动测量吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53277235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档