如何在SQL Server中更改自动增量语句?

时间:2015-07-30 11:01:56

标签: sql sql-server sql-server-2008

我创建了一个表:

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)

我可以这样做吗?

3 个答案:

答案 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);

希望,这将解决您的问题。