用MySQL实现多行数据Update操作以时间戳作为主键的表,提示主键冲突
sql语句格式为:
1 update 表名 set 列名='值1' where 列名='值2'
数据库里有很多行满足where中的条件,设想中update之后数据库应该一次对所有满足条件的行进行值替换
但最后结果是只更新了第一行,后面的行更新时报时间戳主键冲突,不能成功更新
原因:
我在建表时设置时间戳在数据行更新时自动更新为更新时间(即体现的是最后修改时间)
数据库更新多行数据的速度是非常快的,时间戳的精确度不够高,导致连续更新第二条数据时,更新的时间戳与上一条被更新数据中的时间戳(也刚更新过时间戳)相同,即报主键冲突
解决方法:
在表设计中取消时间戳的自动更新
如果不需要自动更新的,勾掉即可成功一次更新多行
第一次遇到这种问题,跪了 _(:D 」∠❀)_