mat*_*att 14 mysql sql duplicates sql-insert sql-delete
REPLACE INTOMySQL中的函数以删除和插入行的方式工作.在我的表中,主键(id)是自动递增的,所以我期望它删除然后id在数据库的尾部插入一个表.
但是,它出乎意料并插入相同的id!这是预期的行为,还是我在这里遗漏了什么?(我id在调用REPLACE INTO语句时没有设置)
hol*_*hol 14
如果您UNIQUE的表中有另一个索引,则必须具有此预期行为,否则它将按预期添加行.查看文档:
REPLACE与INSERT的工作方式完全相同,只是如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除旧行.请参见第13.2.5节"INSERT语法".
https://dev.mysql.com/doc/refman/5.5/en/replace.html
这真的很有意义,因为mySQL会如何找到要替换的行?它只能扫描整个表格,这将非常耗时.我创建了一个SQL Fiddle来演示这个,请看这里
| 归档时间: |
|
| 查看次数: |
16121 次 |
| 最近记录: |