插入两行之间并重新序列号
如何使用游标在两条记录之间插入记录并按顺序更新列表到SQL Server数据库中?
例如:我想在第 3 行之后插入总共 5 条记录,新添加的行将设置为第 4 行和第 4 行,第 5 行将获得序列号 5 和 5。 6.
Ho to insert record between two records and update the list in serial order in to the SQL Server database using cursor?
e.g: total 5 record i want to insert at after 3rd row and newly added row will set to 4th and 4th, 5th row will get the serial number 5 & 6.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
原则上,SQL 中不存在“两条记录之间”这样的东西 - 未声明本机记录顺序。您应该按照您需要的任何顺序查询数据。
你的问题的第二部分怎么样 - 更新序列号,那么你有两个选择。
首先是不使用整数,而是使用浮点值进行排序,这样您可以使用值 3.5,当查询按此字段排序时,该值返回 3 到 4 之间新添加的行。
第二个是增加所有序列号,在您的情况下大于 3,然后插入新记录:
对于 5 条记录和一次一个用户,这没有问题;对于百万条记录和 10 个同时更新,此操作会长时间锁定数据库并可能导致严重的副作用。
In principle there are no such thing as 'between two records' in SQL - native record order is not declared. You should query data in whatever order you need.
What about second part of your question - updating serial numbers, then you have two options.
First is to use not integer, but float values for ordering, this way you can use value 3.5, which returns newly added row between 3 and 4, when query is ordered by this field.
Second one is to increase all serial numbers, greater than 3 in your case and insert new record after that:
For 5 records and one user at a time that is not problem; for million records and 10 simultaneous updates this locks database for long time and can cause nasty side effects.