【发布时间】:2017-03-25 02:08:40
【问题描述】:
如何在 sqlite 中执行大多数 DB 中的典型操作?
if exists(select 1 from tosync where tbname = "%s" and tbid = %d
and (act = 1 and %d = 3 or act = 3 and %d = 1)
begin
delete from tosync where tbname = "%s" and tbid = %d
end
else
begin
insert into tosync(tbname, tbid, act) values("%s", %d, %d);
end
替换的值分别是
[TbName, tbid, act, act, TbName, tbid, TbName, tbid, act]
请注意,本主题与UPSERT 和 sqlite 中的类似问题无关。
【问题讨论】:
-
更新插入是新事物吗?首先你需要声明你的变量
-
@Edward 你是什么意思?
-
@Edward,对不起,但你的最后评论并没有让我更清楚你的第一个问题。但我想这对于大多数 UPSERT 来说并不是什么新鲜事。
-
好吧,我对 SQLite 并不熟悉,但我确实了解 T-SQL,只是说我从未听说过 UPSERT,我想可能是拼写错误。话虽如此,我什至刚刚参加了 Microsoft 数据库基础考试,我可以说其中有 0 分,或者关于 UPSERT 的学习指南
-
@Edward,我明白了。那么是的,在 SQLite 中它是一个选项。执行
UPDATE OR INSERT有效。在下面由 Rik Lewis 发表的评论中查看更多信息。