本篇博客主要记录平时写代码过程中的sql语句或者碰到的问题
insert重复键问题
有三种方法:
INSERT IGNORE INTO
: 如果有条目匹配unique key或primary key,忽略不插入
注意点:如果出现问题,MySQL将不会显示任何错误,因此无法处理错误,自动增量键仍会增加。INSERT REPLACE INTO
:替换条目,如果有条目匹配unique key或primary key
注意点: 由于是删除然后插入新数据 ,太慢了,并且自动增量键会增加INSERT ... ON DUPLICATE KEY UPDATE
: 如果有条目匹配unique key或primary key,进行更新。
注意点:自动增量键仍会增加,UPDATE使用资源进行第二次操作
insert ignore vs insert … on duplicate key update 哪个好?
查阅大部分资料推荐使用 insert … on duplicate key update…
由于insert ignore 忽略报错,还有一些死锁问题。
可以使用 ON DUPLICATE KEY UPDATE id=id,这时候报告没有受影响的行
以下为数据报错信息,其中app为int类型