MySQL标识符identify_SQL Server 重置Identity标识列的值(INT爆了)

一、背景

SQL Server数据库中表A中Id字段的定义是:[Id] [int] IDENTITY(1,1),随着数据的不断增长,Id值已经接近2147483647(int的取值范围为:-2 147 483 648 到 2 147 483 647)了,虽然已经对旧数据进行归档,但是这个表需要保留最近的1亿数据,有什么方法解决Id值就快爆的问题呢?

解决上面的问题有两个办法:一个是修改表结构,把Id的int数据类型修改为bigint;第二个是重置Id(Identity标识列)的值,使它重新增长。

当前标识值:current identity value,用于记录和保存最后一次系统分配的Id值;下次分配Id就是:当前标识值+标识增量(通常为+1,也可以自行设置);

当前列值:current column value,这Id值到目前为止的最大值;

二、重置过程

(一) 下面就测试重置Identity标识列,首先使用下面的SQL创建测试表:

--创建测试表

CREATE TABLE [dbo].[Test_Identity]([IdentityId] [int] IDENTITY(1,1) NOT NULL,[Name] [nchar](10) NULL,CONSTRAINT [PK_testid] PRIMARY KEY CLUSTERED([IdentityId] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY])ON [PRIMARY]

(二) 显示插入Id值,插入后表[Test_Identity]的记录如Figure1所示,接着再隐式插入Id值,插入后表[Test_Identity]的记录如Figure2所示。

--显示插入Id值

SET IDENTITY_INSERT [Test_Identity] ON

INSERT INTO [Test_Identity](IdentityId,Name)SELECT 1000,'name1'

SET IDENTITY_INSERT [Test_Identity] OFF

--隐式插入Id值

INSERT INTO [Test_Identity](Name)SELECT 'name2'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值