--A地的A表 CREATE TABLE dbo.A ( ID int NOT NULL IDENTITY (1, 2), Content varchar(50) NOT NULL ) ON [PRIMARY] GO ALTER TABLE dbo.A ADD CONSTRAINT PK_A PRIMARY KEY CLUSTERED ( ID ) ON [PRIMARY] --在A表中插入两条数据:预先插入A表两条数据 INSERT INTO [dbo].[A] ([Content]) VALUES ('A1') --生成1, 'A1' INSERT INTO [dbo].[A] ([Content]) VALUES ('A3') --生成3, 'A3'
--B地的B表 CREATE TABLE dbo.B ( ID int NOT NULL IDENTITY (2, 2), Content varchar(50) NOT NULL ) ON [PRIMARY] GO ALTER TABLE dbo.B ADD CONSTRAINT PK_B PRIMARY KEY CLUSTERED ( ID ) ON [PRIMARY]
--在B表中插入1条数据:预先插入B表1表数据 INSERT INTO [dbo].[B] ([Content]) VALUES ('B2') --生成2, 'B2'
Print '当前最大值:' + Cast(@MaxID as nvarchar(20)) Print '标识种子:' + Cast(@IDENT_SEED as nvarchar(20)) Print '标识增量:' + Cast(@IDENT_INCR as nvarchar(20)) Print '当前标识值:' + Cast(@IDENT_CURRENT as nvarchar(20)) Print '需设新标识值:' + Cast(@NewIDentity as nvarchar(20))
------关键代码:启用标识导入数据或手工执行过DBCC CHECKIDENT('table_name',RESEED new_reseed_value)就会造成编码规则改变,所以要修复编码规则 if(@IDENT_CURRENT < @MaxID or @IDENT_CURRENT % @IDENT_SEED >0) begin DBCC CHECKIDENT (@TableName, RESEED, @NewIDentity) print '结果:已修复标识,当前标识值重设为' + Cast(@NewIDentity as nvarchar(20)) end else begin Print '结果:不需要重设标识列。' end