我以前从未见过INSERT OR REPLACE INTO names (id, name) VALUES (1, "John")
SQL中使用的语法,我想知道它为什么比它好UPDATE names SET name = "John" WHERE id = 1
.是否有任何理由使用其中一个.这种语法是否特定于SQLite?
如果行不存在,UPDATE将不会执行任何操作.
如果行不存在则插入INSERT OR REPLACE,否则替换值.
我正在处理这样的声明,并想出另一个需要注意的事实:INSERT OR REPLACE将替换语句中未提供的任何值.例如,如果您的表包含一个您没有提供值的"lastname"列,INSERT OR REPLACE将尽可能使"lastname"无效(约束允许)或失败.
REPLACE INTO table(column_list) VALUES(value_list);
是一种较短的形式
INSERT OR REPLACE INTO table(column_list) VALUES(value_list);
要使REPLACE正确执行,您的表结构必须具有唯一的行,无论是简单的主键还是唯一的索引.
REPLACE删除,然后INSERT记录,如果你设置它们将导致INSERT触发器执行.如果您在INSERT上有触发器,则可能会遇到问题.
这是一个解决方法..没有检查速度..
INSERT OR IGNORE INTO table (column_list) VALUES(value_list);
其次是
UPDATE table SET field=value,field2=value WHERE uniqueid='uniquevalue'
此方法允许在不引起触发的情况下进行替换.