Sqlite - 智能插入或替换查询

时间:2017-02-13 20:35:42

标签: sqlite

我对 sqlite 有疑问。

假设我创建了一个表:

CREATE TABLE GOODS(ID TEXT  PRIMARY KEY NOT NULL, TYPE TEXT, VERSION INTEGER)

过了一会儿,我想像这样使用'insert or replace':

insert or replace into GOODS(ID, TYPE,VERSION) values ('chrome_id', 'chrome', 15);

但是我希望这个查询'替换'iff old.VERSION< new.VERSION。

我该怎么做?

我是否需要使用 2 查询(看起来应该是这样:)?

1. get row
if(row.VERSION < myVersion){
2. insert or replace ... 
}

我听说过触发器,但我确实认为这是解决方案。 THX

1 个答案:

答案 0 :(得分:1)

使用INSERT statement的SELECT表单可以控制插入的行数:

INSERT OR REPLACE INTO Goods(ID, Type, Version)
SELECT 'chrome_id', 'chrome', 15
WHERE NOT EXISTS (SELECT *
                  FROM Goods
                  WHERE ID = 'chrome_id'
                    AND Version >= 15);