插入在两行之间并重新排列编号



如何在两个记录之间插入记录,并使用游标以串行顺序在SQL Server数据库中更新列表?

e。G:我想在第3行之后插入总共5条记录,新添加的行将设置为第4行和第4行,第5行将获得序列号5 &6 .

原则上,SQL中不存在"两条记录之间"这样的事情——本地记录顺序不声明。你应该按你需要的顺序查询数据。

那你问题的第二部分——更新序列号呢?那么你有两个选择。

首先是不使用整数,而是使用浮点值排序,这样您可以使用值3.5,当查询按此字段排序时,它返回新添加的3到4之间的行。

第二种方法是增加所有序列号,在您的情况下大于3,并在此之后插入新记录:

Update mytable Set serialno=serialno+1 Where serialno > @lastnumbertokeep
Insert Into mytable (serialno, otherfields) Values (@lastnumbertokeep+1, othervalues)

对于5条记录和一个用户,一次没有问题;对于数百万条记录和10次同步更新,此操作将长时间锁定数据库,并可能导致严重的副作用。

最新更新