我创建了一个表:
create table empty
(
data_id int identity(70,30),
emp_name varchar(20),
address varchar(20),
city varchar(20)
)
并插入如下数据:
data_id emp_name address city
---------------------------------------------
70 ritesh 210 b_block sivapur
100 pritma visvaas khand lucknow
130 rakesh nehru nagar delhi
现在我想将自动增量从(70, 30)
改为(70, 10)
。
我可以这样做吗?
答案 0 :(得分:2)
您无法一次性更改,您需要创建一个新表并复制行。
尝试使用此方法创建临时表,移动行,删除旧表并重命名临时表:
BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_empty
(
data_id int NOT NULL IDENTITY (70, 10),
emp_name varchar(20) NULL,
address varchar(20) NULL,
city varchar(20) NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_empty ON
GO
IF EXISTS(SELECT * FROM dbo.empty)
EXEC('INSERT INTO dbo.Tmp_empty (data_id, emp_name, address, city)
SELECT data_id, emp_name, address, city FROM dbo.empty WITH (HOLDLOCK TABLOCKX)')
GO
SET IDENTITY_INSERT dbo.Tmp_empty OFF
GO
DROP TABLE dbo.empty
GO
EXECUTE sp_rename N'dbo.Tmp_empty', N'empty', 'OBJECT'
GO
COMMIT
答案 1 :(得分:0)
您可以使用DBCC CHECKIDENT
DBCC CHECKIDENT
(
table_name
[, { NORESEED | { RESEED [, new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
例如DBCC CHECKIDENT ('empty', RESEED, 10);
请参阅此DBCC CHECKIDENT
答案 2 :(得分:-1)
创建一个名为data_id_New
的新列。
ALTER TABLE empty ADD data_id_New int;
现在将data_id
的所有值复制到data_id_New
。
Update empty set data_id_New = data_id
现在删除列。
ALTER TABLE empty DROP COLUMN data_id;
将列data_id_New
重命名为data_id
。
ALTER TABLE empty RENAME COLUMN data_id_new to data_id;
最后修改新列
ALTER TABLE empty MODIFY data_id int identity(70,10);
希望,这将解决您的问题。