我使用下面的SQL创建了一个带有auto_increment主键的表,但是发现在truncate表后主键没有重置为零,因为在插入数据后主键从上次truncate开始继续增加。我相信primary会太大而不会导致溢出。怎么解决?
CREATE TABLE dbo.BM_SM_ERR
(
SMCWBM int identity, -- primary key
SMCWDM varchar(10) NOT NULL,
PRIMARY KEY CLUSTERED (SMCWBM)
)
with identity_gap=1
sybase 版本 Adaptive Server Enterprise 15.7
最佳答案
删除、截断表或关闭后,身份不会重置。如果您想要使用sp_chgattribute,则必须手动重置它。程序:
1> insert into BM_SM_ERR(SMCWDM) values ('x')
2> go
(1 row affected)
1> insert into BM_SM_ERR(SMCWDM) values ('y')
2> go
(1 row affected)
1> insert into BM_SM_ERR(SMCWDM) values ('z')
2> go
(1 row affected)
1> select * from BM_SM_ERR
2> go
SMCWBM SMCWDM
----------- ----------
1 x
2 y
3 z
(3 rows affected)
1> truncate table BM_SM_ERR
2> go
1> insert into BM_SM_ERR(SMCWDM) values ('v')
2> go
(1 row affected)
1> select * from BM_SM_ERR
2> go
SMCWBM SMCWDM
----------- ----------
4 v
(1 row affected)
1> truncate table BM_SM_ERR
2> go
1> exec sp_chgattribute BM_SM_ERR, 'identity_burn_max', 0, '0'
2> go
DBCC execution completed. If DBCC printed error messages, contact a user with System Administrator (SA) role.
'identity_burn_max' attribute of object 'BM_SM_ERR' changed to 0.
(return status = 0)
1> insert into BM_SM_ERR(SMCWDM) values ('q')
2> go
(1 row affected)
1> select * from BM_SM_ERR
2> go
SMCWBM SMCWDM
----------- ----------
1 q
(1 row affected)
关于primary-key - 在sybase中使用auto_increment主键创建表,截断表后主键不为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51510280/