mysqlduplicatekey用法,mysql duplicate key update
今天小编为大家分享热门的游戏排行榜、游戏攻略!希望能够帮助到大家!
关于duplicatekey的问题,我来给大家解答一下。首先,我们来说一下UPDATE的情况。如果在执行UPDATE之后,插入了一行导致在UNIQUE索引或PRIMARY KEY中出现了重复值,那么旧行将会被更新。比如说,如果列a被定义为UNIQUE并且包含值1,那么下面这两个语句的效果是一样的:
如果新插入一行记录,受影响的行数为1;如果更新了原有的记录,受影响的行数为2。这是需要注意的一点。另外,如果列b也是唯一列的话,那么INSERT语句与之前的UPDATE语句是等价的。
接下来,我们来说说在存在主键的情况下的不同之处。当我们使用replace语句时,如果存在主键冲突,就会先删除旧记录,然后插入新的记录。所以,原有的所有记录都会被清除。而且,如果replace语句中的字段不完整的话,那么某些字段,比如字段c,会被自动填充为默认值。
而insert..ondeplicateupdate语句则只执行update标记后面的SQL,表面上看起来就像是一个简单的update语句。但实际上,根据我的推测,它也是先删除旧记录,再插入新的记录。只不过在插入的过程中,保留了除update后面字段以外的所有字段的旧值。所以这两者的区别只有一个,insert..ondeplicateudpate保留了所有字段的旧值,然后再覆盖更新插入进去,而replace没有保留旧值,直接删除旧值,再插入新值。
从底层执行效率上来说,replace要比insert..ondeplicateupdate效率高一些。但是在写replace语句时,需要注意要把所有字段都写全,以免旧的字段数据被删除。这是需要注意的地方。
总的来说,对于duplicatekey的处理,我们可以根据具体情况选择使用replace或insert..ondeplicateupdate语句。每种方式都有自己的特点和适用场景。希望以上解答对大家有所帮助。如果还有其他问题,欢迎继续提问。
m.yiLeen.Com.cn艺练网专注于游戏代练的交易平台,提供专业的手游、网游、英雄联盟代练、LOL代练、地下城与勇士、和平精英代练、QQ飞车代练等服务。
专业专注用心服务,如有海外金融牌照的任何疑问请联系我们。
联系邮箱:773537036@qq.com
发表评论