会有问题,问题在于如果修正的值已经大于序列确当前值,新增到下一行时,自增id的值刚好即是这个修正的值,就会违反某个索引约束,比如唯一索引,顺理成章的就会抛索引约束的缺点。
为什么问题又不大呢?由于,序列的特点:每select一次,序列值就增加一次,新增下一列第一次失落败,select了一次,再新增一次,就正常了。除非-------序列当前值的后面的一长串的id值都被占用了,那就从业务功能上操作上看,一贯点新增,彷佛一贯在抛错,相称不友好。怎么办?跟当年oracle
一样:
# 1.先查看当前数据中自增id的最大值(max)SELECT max(f_id) FROM table_name# 2.检讨当前表的序列值select nextval('t_xxx_f_id_seq') # 这个值<max(f_id)# 3.修正序列的初始值alter sequence t_xxx_f_id_seq restart with [max(f_id)+1] # 比当前自增id最大值大1即可
4.问题扩展-索引名称
既然我们已经聊到了数据之间确实存在差异,我们就像摆龙门阵一样,摆到哪儿摆哪儿,讲一讲索引名称在mysql
和pgsql
之间的差异吧。当个条记,这些差异虽然可以通过各种migrate工具抹平,但是底层却是实打实差异。
好了,就这么个问题,就捎带手记录一下,至于其他延展内容,请大家自行学习。