为具有自增列的列设置起始值

80

我有一个名为Orders的表,其包含以下字段:

Id | SubTotal | Tax | Shipping | DateCreated

Id列设置为autoincrement(1,1)

该表将用于电子商务门户。有时,当前的电子商务商店会迁移到我的平台,并且他们已经有了订单 - 这可能意味着他们当前的Order.Id9586

我希望将autoincrement字段从该值开始递增。

我该如何实现这一点?

4个回答

154

以下内容翻译自《重置SQL Server标识列》:

获取表Employees的标识列:

DBCC checkident ('Employees')

修复标识种子(如果数据库正在插入重复的标识):

DBCC checkident ('Employees', reseed)

将表格Employees的标识种子更改为1000:

DBCC checkident ('Employees', reseed, 1000)
下一行插入的位置将从1001开始。

29

你需要将标识种子设置为该值:

CREATE TABLE orders
(
 id int IDENTITY(9586,1)
)

修改现有表:

ALTER TABLE orders ALTER COLUMN Id INT IDENTITY (9586, 1);

有关CREATE TABLE (Transact-SQL) IDENTITY (Property)的更多信息。


13
在Microsoft SQL Server 2012中,上述的ALTER TABLE命令对我无效。它会显示以下错误:"Incorrect syntax near the keyword 'IDENTITY'."不过,接受答案中的DBCC命令可以正常工作。 - Eric Barr

11

请注意,通常情况下您无法为自增列(IDENTITY column)设置值。但是,如果您为表设置IDENTITY_INSERT为ON,您可以指定行的自增标识。例如:

SET IDENTITY_INSERT Orders ON

-- do inserts here

SET IDENTITY_INSERT Orders OFF

这个插入语句将重置标识列为最后一个插入的值。来自MSDN

如果插入的值大于表的当前标识列值,SQL Server会自动使用新插入的值作为当前标识列值。


正是我需要的 - 对于填充我从mysql php迁移到C# MVC应用程序的数据库非常有用。 - pigeon

3
在SQL Server Management Studio的表设计器中,您可以设置自动递增的起始位置。在对象资源管理器中右键单击表,选择“设计”,然后转到相关列的“列属性”:这里自动递增将从760开始

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接