首页 新闻 会员 周边

SQL Server自动增长字段删除第N条记录,再增加记录的时候默认从N+1开始,如何从N开始?

0
悬赏园豆:10 [已解决问题] 解决于 2010-02-16 14:51

看了很多参考,说是用触发器,不知具体怎么实现?

凯尔网络的主页 凯尔网络 | 初学一级 | 园豆:159
提问于:2010-02-04 17:23
< >
分享
最佳答案
0

同意楼上各位的建议,再出一个主意,希望能对楼主有帮助!

首先是问题,如果是删除了中间的记录,比如说现在有1000条了,结果删除了第500条,这时实际记录只有999条,但还是需要从1001开始。不知道这种情况是否对楼主的程序逻辑有影响。同时,在并发情况下,第N条记录被删除,要保证出入N+1条没有重复,还是需要有一定的开发考虑。

如果上述有影响的话,建议是否可以保留自增长字段,但是再增加一个记录序号的字段,当然这个字段的增加就需要考虑并发了,可以有一个公共的服务来生成记录数,这是一个解决方法,不过也有问题,就是量大的话,可能会是瓶颈。

以上供楼主参考,希望能有帮助

收获园豆:10
Alfred2006 | 菜鸟二级 |园豆:255 | 2010-02-05 09:29
其他回答(3)
0

笨方法:

添加之前,把种子字段改成非种子,

然后再改回来.

再添加记录应该就从N开始了.

一滴血 | 园豆:1602 (小虾三级) | 2010-02-04 17:28
0

语法


DBCC CHECKIDENT 
(
        table_name
        [ , { NORESEED | { RESEED [ , new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]

参数

table_name

是要对其当前标识值进行检查的表名。指定的表必须包含标识列。表名必须符合标识符规则。

NORESEED

指定不应更改当前标识值。

RESEED

指定应该更改当前标识值。

new_reseed_value

用作标识列的当前值的新值。

WITH NO_INFOMSGS

取消显示所有信息性消息。

I,Robot | 园豆:9783 (大侠五级) | 2010-02-04 17:44
0

显式插入标识值
SET IDENTITY_INSERT T1 ON;
GO
INSERT INTO T1 (column_1,column_2)
    VALUES (-99, 'Explicit identity value');
GO

查尔斯 | 园豆:3832 (老鸟四级) | 2010-02-04 23:11
这样可以
支持(0) 反对(0) 上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2010-02-05 10:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册