2 leebluemoon Leebluemoon 于 2017.09.03 09:06 提问

SQL server数据库同一张表同一字段实现自增排序

想在数据库中实现字段的自增排序,但是当删除某一行数据之后,新增数据会以被删除数据上一行数据进行自增。在删除数据而不新增数据时,被删除数据实现自动减一。保持原来排序,避免断档。
求教各位大佬(抱歉因为之前没说明白重新更改了一下问题)。

3个回答

m0_38093650
m0_38093650   2017.09.04 12:04
已采纳

我懂你的意思,但是有个问题:当你的数据量变得很大时,你删除第一条数据,后面的ID都要自减一,这样的操作非常的浪费时间和资源,所以,最好不要考虑这样的思路,
不过你可以插空,向被删的数据ID为12的位置,插入新的数据ID=12(用update)前提是你要把IDENTITY_INSERT关闭 _
方法如下: SET IDENTITY_INSERT [tableName] ON
update 。。。。。。
SET IDENTITY_INSERT [tableName] OFF

caozhy
caozhy   Ds   Rxr 2017.09.03 09:11

不要把这个自增作为数据存在数据表中,相反,通过sql的rownumber功能在查询的时候输出行号。

caozhy
caozhy 回复Leebluemoon: 不可能,你是按照我说的做的么
3 个月之前 回复
Leebluemoon
Leebluemoon 回复caozhy: 但事实是已经出现了。删除12这一行数据后,13不会变成12,并且新增也会以14开始的
3 个月之前 回复
caozhy
caozhy 回复Leebluemoon: 行号是自动编号的,不会出现你说的情况
3 个月之前 回复
Leebluemoon
Leebluemoon 但是自增后删除不就少了一个数值吗?,比如已经自增11,12,13.当我删除12时。我想让13自动变成12补位。抱歉我没说明白
3 个月之前 回复
Runner__1
Runner__1   Rxr 2017.09.03 09:12

http://blog.csdn.net/zdw_wym/article/details/7596534

这篇文章说的是利用触发器实现让特定字段有特定格式的编号,你可以修改触发器的逻辑,每次插入的时候获取当前最大id,加1后作为新的id

Leebluemoon
Leebluemoon 谢谢突然意识是到我想的还比较麻烦,还要考虑删除时,被删除的数据下面的数据自动减1.
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片