我对 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
答案 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);