SQLite – UPSERT * not * INSERT或REPLACE
发布时间:2020-12-12 19:22:52 所属栏目:百科 来源:网络整理
导读:http://en.wikipedia.org/wiki/Upsert Insert Update stored proc on SQL Server 有没有一些聪明的方式来做这个在SQLite,我没有想过? 基本上,如果记录存在,我想更新四列中的三个, 如果不存在,我想使用第四列的默认(NUL)值插入记录。 ID是主键,因此只
http://en.wikipedia.org/wiki/Upsert
Insert Update stored proc on SQL Server 有没有一些聪明的方式来做这个在SQLite,我没有想过? 基本上,如果记录存在,我想更新四列中的三个, ID是主键,因此只有一条记录到UPSERT。 (我试图避免SELECT的开销,以确定我是否需要UPDATE或INSERT显然) 建议? 假设表中有3列。ID,NAME,ROLEBAD:这将使用ID = 1的新值插入或替换所有列: INSERT OR REPLACE INTO Employee (id,name,role) VALUES (1,'John Foo','CEO'); BAD:这将插入或替换2列… NAME列将被设置为NULL或默认值: INSERT OR REPLACE INTO Employee (id,'code monkey'); GOOD:这将更新2列。 INSERT OR REPLACE INTO Employee (id,role,name) VALUES ( 1,'code monkey',(SELECT name FROM Employee WHERE id = 1) ); 这将更新2列。 INSERT OR REPLACE INTO Employee (id,role) VALUES ( 1,'Susan Bar',COALESCE((SELECT role FROM Employee WHERE id = 1),'Benchwarmer') ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |