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