是否可以基于SQLite中多个相同的值插入或更新行?

oxosxuxt  于 2023-01-26  发布在  SQLite
关注(0)|答案(1)|浏览(193)

我对SQLite不是很有经验,而且我想基于本地数据库进行一些操作,我的数据由一个ID的很多条目组成,还有一些额外的ID来指定数据,基于多个ID,表中每个条目应该有一个唯一的组合。
我想根据ID的组合选择一行(如果存在),然后在该行中插入或更新一些列。
我还没有真正尝试过任何东西,因为我不知道从哪里开始。
但是为了说明我的意思,我会想到这样的事情:更新或替换到我的表中(ID,零件ID,位置ID,扭矩)值(2,6,4,100)其中(ID,零件ID,位置ID)=(2,6,4)

pepwfjgg

pepwfjgg1#

首先,您需要为列IDPart_IDLocation_ID的组合指定一个 unique constraint,您可以使用唯一索引定义该约束:

CREATE UNIQUE INDEX idx_my_table ON my_table (ID, Part_ID, Location_ID);

然后使用UPSERT

INSERT INTO my_table (ID, Part_ID, Location_ID, Torque) VALUES (2, 6, 4, 100)
ON CONFLICT(ID, Part_ID, Location_ID) DO UPDATE
SET Torque = EXCLUDED.Torque;

参见demo

相关问题