在MySQL中,在哪种情况下我应该使用REPLACE,哪些应该使用UPDATE。加上这个作为奖励,在什么情况下我应该使用DELETE和INSERT的组合与先提到的2相比。
答案 0 :(得分:1)
如果您不确定数据库中是否存在记录,或者您不想检查它是否存在,则使用REPLACE。基本上会发生什么是如果记录存在它将被删除和插入,如果不存在它将被插入。它主要是为了方便,但不是ANSI SQL。
执行UPDATE与DELETE / INSERT相比,性能通常更好。所以一般不鼓励使用REPLACE。
您的偏好应该始终是
1. UPDATE
2. DELETE/INSERT (REPLACE)
答案 1 :(得分:1)
REPLACE
是SQL标准的MySQL扩展。它插入, 或删除和插入。对于标准的另一个MySQL扩展 插入或更新的SQL - 请参见第12.2.5.3节“INSERT ... ON DUPLICATE KEY UPDATE语法“。
最好不要尝试编写可移植的SQL。
请注意,除非表格包含
PRIMARY KEY
或UNIQUE
索引,否则请使用REPLACE
声明毫无意义。它等同于INSERT
, 因为没有索引可用于确定是否有新行 复制另一个。
所以还有另一种情况你不应该使用它。
要使用
REPLACE
,您必须同时拥有该表的INSERT
和DELETE
权限。
这与UPDATE
权限不同。
评论中还有一大堆建议和注意事项。
为什么没有人再阅读文档了?当你知道人们做使用它时,很难让它保持最新状态。