我对SQLite不是很有经验,而且我想基于本地数据库进行一些操作,我的数据由一个ID的很多条目组成,还有一些额外的ID来指定数据,基于多个ID,表中每个条目应该有一个唯一的组合。我想根据ID的组合选择一行(如果存在),然后在该行中插入或更新一些列。我还没有真正尝试过任何东西,因为我不知道从哪里开始。但是为了说明我的意思,我会想到这样的事情:更新或替换到我的表中(ID,零件ID,位置ID,扭矩)值(2,6,4,100)其中(ID,零件ID,位置ID)=(2,6,4)
pepwfjgg1#
首先,您需要为列ID、Part_ID和Location_ID的组合指定一个 unique constraint,您可以使用唯一索引定义该约束:
ID
Part_ID
Location_ID
CREATE UNIQUE INDEX idx_my_table ON my_table (ID, Part_ID, Location_ID);
然后使用UPSERT:
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。
1条答案
按热度按时间pepwfjgg1#
首先,您需要为列
ID
、Part_ID
和Location_ID
的组合指定一个 unique constraint,您可以使用唯一索引定义该约束:然后使用
UPSERT
:参见demo。