由于一开始使用了事务和排它锁所以并未担心出现这样的问题
但是突然发现在没有数据的情况下插入数据会出现重复数据
以为是行锁影响了,将行锁去除后再试竟然没有变化
于是想用其他方式代替select和insert的两条sql
防止重复数据的方法
insert ignore into
on duplicate key update
insert … select … where not exist
replace into
可以上4种都无法解决我的问题,因为我需要获得查询后的id或插入后的id
所以最后尝试什么都不用,只加一个唯一索引
这样担心会报错,所以想如果报错就使用ignore忽略错误,结果没报错
后面在没出现过重复数据,猜测这是mysql解析时的优化。
总结:加上唯一索引足以