更改标识的增量值 - SQL Server 2005

时间:2015-10-29 03:57:08

标签: sql sql-server

我想更改数据库中IDENTITY列的增量值,我有以下限制:

  1. 无法删除列。
  2. 有大约20k行。
  3. 删除表并使用更改的增量值重新创建表将是解决方案。我不知道语法。

    您能否建议语法或其他最佳解决方案?

    提前致谢!

3 个答案:

答案 0 :(得分:3)

如果我理解你正确地基于你对我的评论的回复,你在临时表中备份了orig表的数据,然后你删除了orig表并且你想重新创建一个orig表。

如果是这种情况,则需要IDENTITY_INSERT设置ONOFF,因为该表的标识是唯一的。

语法为:

SET IDENTITY_INSERT [TableName] ON -- set to on
-- Put your insert statement here
-- insert the data from backed up temp table to your new table
SET IDENTITY_INSERT [TableName] OFF -- set to off

答案 1 :(得分:2)

如果您可以接受重新创建表,则重新创建表语法没有任何魔力。

 CREATE TABLE temp_Table
 (
      -- Identity column with new settings
      -- other columns
 );

 INSERT INTO temp_Table
 SELECT -- Columns except identity column
 FROM old_table;

 DROP TABLE old_Table;

 EXEC sp_rename 'temp_Table', 'old_Table';

但是,你必须自己处理外键。

答案 2 :(得分:1)

无法在创建表格后更改标识列。

而是使用以下命令重置SEED值。

DBCC CHECKIDENT('tablename', RESEED, 15)