SQLite“插入或更换进入”与“更新…在哪里”
我从来没有见过INSERT OR REPLACE INTO names (id, name) VALUES (1, "John")
在SQL中使用过,我想知道为什么它比UPDATE names SET name = "John" WHERE id = 1
更好UPDATE names SET name = "John" WHERE id = 1
。 有没有什么好的理由使用一个在另一个。 这个语法是特定于SQLite吗?
如果该行不存在,UPDATE将不会执行任何操作。
INSERT OR REPLACE在行不存在的情况下将被插入,或者如果它存在,则replace值。
我目前正在处理这样一个声明,并想出另一个事实来注意:INSERT OR REPLACE将会replace声明中没有提供的任何值。 例如,如果你的表包含一个你没有提供值的列“lastname”,INSERT OR REPLACE将尽可能的取消“lastname”(约束条件允许)或者失败。
插入或replace查询将插入一个新的logging如果id = 1尚不存在。
更新查询只会在id = 1的情况下响起,如果它不存在,则不会创build新logging。
REPLACE INTO table(column_list) VALUES(value_list);
是一个简短的forms
INSERT OR REPLACE INTO table(column_list) VALUES(value_list);
要使REPLACE正确执行,您的表结构必须具有唯一的行,无论是简单的主键还是唯一的索引。
REPLACE删除,然后INSERT的logging,并会导致INSERT触发器执行,如果你有他们设置。 如果在INSERT上有触发器,则可能会遇到问题。
这是一个工作..没有检查速度..
INSERT OR IGNORE INTO table (column_list) VALUES(value_list);
其次是
UPDATE table SET field=value,field2=value WHERE uniqueid='uniquevalue'
这种方法允许替代发生而不引发触发。