由于一开始使用了事务和排它锁所以并未担心出现这样的问题

但是突然发现在没有数据的情况下插入数据会出现重复数据

以为是行锁影响了,将行锁去除后再试竟然没有变化

于是想用其他方式代替select和insert的两条sql

防止重复数据的方法

  1. insert ignore into

  2. on duplicate key update

  3. insert … select … where not exist

  4. replace into

可以上4种都无法解决我的问题,因为我需要获得查询后的id或插入后的id

所以最后尝试什么都不用,只加一个唯一索引

这样担心会报错,所以想如果报错就使用ignore忽略错误,结果没报错

后面在没出现过重复数据,猜测这是mysql解析时的优化。

总结:加上唯一索引足以


琳千秋
254 声望7 粉丝