REPLACE
是 MySQL 中一个非常实用的命令,可以看作是 INSERT
的增强版。它的主要功能是:如果表中已存在相同的主键或唯一索引记录,则先删除旧记录,再插入新记录;如果不存在,则直接插入新记录。
REPLACE 的基本用法
REPLACE
的语法几乎与 INSERT
相同,唯一的区别是:插入的字段中必须包含主键或唯一索引字段。
示例 1:插入单条数据
1 | REPLACE INTO tabname(id, name, createtime) |
示例 2:将查询结果作为值插入
1 | REPLACE INTO tabname(id, name, createtime) |
REPLACE 的工作原理
- 检查冲突:
REPLACE
会根据主键或唯一索引检查表中是否已存在相同记录。 - 删除旧记录:如果存在冲突,则先删除旧记录。
- 插入新记录:插入新记录。
注意事项
- 性能影响:由于
REPLACE
可能会先删除再插入,因此在数据量较大时,可能会影响性能。 - 字段完整性:如果表中定义了自增主键,使用 REPLACE 会导致自增值增加。
- 触发器:REPLACE 会触发 DELETE 和 INSERT 触发器。