REPLACE 与 IGNORE
1. INSERT IGNORE
- 当插入数据导致主键或唯一索引冲突时,忽略该条插入,继续执行其他记录插入。
- 不会报错,冲突记录不会插入,也不会更新。
示例:
INSERT IGNORE INTO users (id, username) VALUES (1, 'alice');
`
如果 id=1 已存在,该条记录将被跳过。
2. REPLACE
- 先尝试插入记录。
- 如果主键或唯一索引冲突,则先删除旧记录,再插入新记录。
- 相当于先删除后插入,可能导致触发器执行和自增 ID 变化。
示例:
REPLACE INTO users (id, username) VALUES (1, 'alice');
如果 id=1 已存在,先删除旧记录,再插入新记录。
3. 主要区别
| 特性 | INSERT IGNORE | REPLACE |
|---|---|---|
| 发生冲突时行为 | 忽略插入,不报错 | 删除旧记录,插入新记录 |
| 触发器影响 | 不触发删除触发器 | 触发删除和插入触发器 |
| 影响自增字段 | 无 | 可能重新分配自增值 |
| 使用场景 | 忽略重复,保持原数据 | 替换旧数据,更新记录 |
根据需求选择使用 INSERT IGNORE 或 REPLACE,合理处理数据冲突。
相关内容
- mariabackup 工具 本节介绍 MariaDB 官方的物理备份工具 mariabackup,包括安装、使用方法和常用参数,帮助实现高效的数据库备份和恢复。
- mysqldump 使用 本节介绍使用 mysqldump 工具备份和恢复 MariaDB 数据库,包括导出数据库、表和数据的常用命令及参数示例。
- 性能监控与配置 本节介绍 MariaDB 性能监控与配置方法,涵盖性能指标监测、参数调优及工具使用,帮助提升数据库稳定性和响应速度。
- 慢查询日志 本节介绍 MariaDB 慢查询日志的配置与使用方法,通过记录执行时间较长的 SQL 语句,帮助定位性能瓶颈,优化数据库查询效率。
- 常规恢复 本节介绍 MariaDB 常规恢复方法,包含从 mysqldump 和 mariabackup 备份文件中恢复数据库的步骤,确保数据安全快速恢复。
- PITR 时间点恢复 本节讲解 MariaDB 利用二进制日志实现时间点恢复(PITR),通过恢复备份及应用日志,精确恢复到指定时间点。