列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,我强烈推荐大家尝试一下这种窍门,好好利用它。