【发布时间】:2017-02-13 20:35:42
【问题描述】:
我有一个关于 sqlite 的问题。
假设我创建了一个表:
CREATE TABLE GOODS(ID TEXT PRIMARY KEY NOT NULL, TYPE TEXT, VERSION INTEGER)
然后过一段时间我想像这样使用“插入或替换”:
insert or replace into GOODS(ID, TYPE,VERSION) values ('chrome_id', 'chrome', 15);
但我希望这个查询“替换”如果 old.VERSION
我该怎么做?
我是否需要使用 2 个查询(应该如下所示:)?
1. get row
if(row.VERSION < myVersion){
2. insert or replace ...
}
我听说过触发器,但我确实认为这是解决方案。 谢谢
【问题讨论】:
-
没有。如果找不到,则 REPLACE INTO 将插入该值,如果找到则更新它。您需要一个 command(查询只是 SELECT)。
-
据我所知,替换是:DELETE + INSERT。当我写“我该怎么做?”我实际上是指一个命令,所以当你说我需要一个命令时你是什么意思你到底是什么意思? @Rotwang
-
您需要一个命令 (REPLACE INTO)。它在幕后做什么来完成你的命令不是你的事。你告诉它执行一个命令,它会为你执行两个。
-
所以你说我需要类似的东西:替换成 GOODS(ID, TYPE,VERSION) 值 ('chrome_id', 'chrome', 15) where VERSION
标签: sqlite