我在SQLite 3中有一个表:
CREATE TABLE foo
(
bar TEXT
);
它总是有0或1行。我想编写一个查询,如果有1行则更新行,如果有0则添加行。最简单的方法是什么?
答案 0 :(得分:2)
如果您可以再添加一个唯一字段,则可以:
INSERT OR REPLACE INTO foo (id, bar) VALUES (1, ?);
在这种情况下创建表:
CREATE TABLE foo (id INTEGER NOT NULL, bar TEXT, UNIQUE (id));
或者当Alexey发现它时,没有主键:
INSERT OR REPLACE INTO foo (rowid, bar) VALUES (1, ?);
答案 1 :(得分:1)
您可以执行类似
的操作IF (SELECT COUNT(*) FROM foo) = 0
BEGIN
INSERT INTO foo VALUES ('text')
END
ELSE
BEGIN
UPDATE foo SET baa = 'text'
END
希望这有帮助。
答案 2 :(得分:1)
采用here描述的方法,为表提供主键,并使用INSERT OR IGNORE
语法,始终使用相同的键值。