一起学习网 一起学习网

列MS SQL修改自增长列:一种不可思议的窍门(mssql 修改自增长)

当你使用MS SQL数据库的时候,你可能会遇到一些需要修改的自增长列的情况。但很多时候,由于自增长列字段的特殊性,用户可能不知道应该如何处理这种情况。

自增长列指的是当新记录被添加到表中时,数据库会给它生成一个自动递增的数字值。在MS SQL中,设置是使用IDENTITY COLUMN特性实现的。如果您知道自增长列的标识,例如,应该如何修改它?

幸运的是,MS SQL提供了一种不可思议的窍门来修改自增长列,您可以使用以下脚本来实现:

— 修改自增长字段的Seed和increment

ALTER TABLE 表名 ADD SeedNum INT NOT NULL DEFAULT 0 CONSTRAINT Con_SeedNum

ALTER TABLE 表名 ADD IncrementNum INT NOT NULL DEFAULT 0 CONSTRAINT Con_IncrementNum

ALTER TABLE 表名 DROP CONSTRAINT PK_XXX

EXEC sp_rename ‘表名.PK_XXX’, ‘PK_OldPK’, ‘OBJECT’

— 将表中记录的SeedNum和IncrementNum取出

DECLARE @Seed INT

DECLARE @Increment INT

SELECT @Seed = MAX(Id) – COUNT(Id) +1 FROM 表名

SELECT @Increment = CASE WHEN MAX(Id) > MIN(Id)

THEN MAX(Id)- MIN(Id)

ELSE 0

END

FROM 表名

— 根据以上信息,重新建立一个新的自增列

ALTER TABLE 表名 ADD Id_AutoIncrement INT NOT NULL DEFAULT(0) IDENTITY(@Seed, @Increment) CONSTRAINT PK_XXX

— 删除原先的Seed和Increment字段

ALTER TABLE 表名 DROP COLUMN SeedNum

ALTER TABLE 表名 DROP COLUMN IncrementNum

— 将名字改回去

EXEC sp_rename ‘表名.PK_OldPK’, ‘PK_XXX’, ‘OBJECT’

通过上面的代码,我们可以修改自增长列,从而实现更加灵活的自动编号功能。如果你正在使用MS SQL,我强烈推荐大家尝试一下这种窍门,好好利用它。