代码点读机 / SQL / CONFLICT

CONFLICT SQL · 约束

ON CONFLICT 意思是「撞车了怎么办」:插入撞上唯一约束时,改为更新原行(俗称 UPSERT)或干脆跳过。

怎么用

INSERT INTO 表 (...) VALUES (...)
ON CONFLICT(列) DO UPDATE SET ...;

小例子

INSERT INTO 用户 (id, 名字) VALUES (1, '小明')
ON CONFLICT(id) DO UPDATE SET 名字 = excluded.名字;

效果

id=1 已存在时不报错,改为把它的名字更新成 小明。

提醒:DO NOTHING 表示干脆跳过这条也不报错;excluded.名字 指的是「这次想插进来却撞车」的那个值。

官方文档:https://www.sqlite.org/lang_upsert.html

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← SQL全部词条