在两行之间插入并重新串行nos

时间:2011-08-29 07:23:56

标签: sql sql-server tsql insert cursor

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

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

1 个答案:

答案 0 :(得分:3)

原则上,SQL中没有“两个记录之间”这样的东西 - 未声明本机记录顺序。您应该以您需要的顺序查询数据。

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

首先使用非整数,但使用float值进行排序,这样你就可以使用值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条同步更新,这会长时间锁定数据库,并可能导致令人讨厌的副作用。