现在有一张表,有一个字段Order(数字类型)用来排序,想实现在insert的时候判断Order是否重复,重复的话就把表中原有的该Order以及该Order之后的序号都加1. 在update的时候实现的功能如下面的例子
比如表中有序号为1,2,3,4的数据
现在插入序号为2的数据,则把原先的2,3,4更行成3,4,5
如果将序号为3的数据更新为1,
则把序号1,2改成2,3,然后把3改成1
如果将序号为2的数据更新为4
则把序号3,4的数据改成2,3,再把2改为4
------解决方案--------------------
这种设计思想是谁指引你这么做的?还是你自己想出来的?
我只想说完全没有一点设计在里面,如果还有外键约束呢?这不是改完了这个 ID就完事,可能会导师系统数据乱套
------解决方案--------------------
做是可以做,必须用游标,然后从最后一个修改到当前位置。
不过,你这个思路不对啊。
------解决方案--------------------
我知道你的意思,其实就是有一些东西需要排序,且按人设定的顺序排序对吧。
我建议你不把这个排序列当主键,然后把所有要排序的东西全部列给人看,然后按照顺序重新更新一下顺序就行了,没必要在数据库里这样改。
比如
A 1
B 2
C 3
D 4
变成了
B D C A
你不应该在数据库里做这个改变,而是在程序中,按照BDCA的顺序,重新更新B为1,D为2,C为3,A为4,数据库的操作只有一个UPDATE就行了。