• 3563阅读
  • 1回复

[提问]MYSQL的replace语句带AUTO_INCREMENT属性列的问题 [复制链接]

上一主题 下一主题
离线纵刀少年
 

只看楼主 倒序阅读 楼主  发表于: 2013-04-08
官网上关于REPLACE语句的说明:如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除


现在我是用replace来更新原有记录或在原有记录不存在重复的时候,再插入新的记录。
但现在的问题是:
1.能不能自行指定使用哪一个索引来作为新旧记录的判断?如果不能,那么PRIMARY KEY和UNIQUE索引的优先级是怎样?默认优先采用PRIMARY KEY?
2.现在我有一个用来排序的序号列“NO”(姑且称为A,带AUTO_INCREMENT属性)作为主键,还有一个可以用来做索引的列“INDEX”(称为B)。我不知道MySql引擎是使用哪一个来进行REPLACE语句的判断了,好像是A。假设现在我有10条记录,我明明是更新一些重复的记录,但它却让主键A从11开始重新把这些信息排序了,即11-20。这不是我希望的~~



离线XChinux

只看该作者 1楼 发表于: 2013-04-08
干脆自己查询确认吧。因为这个replace语句在其它的数据库并不普遍。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个