设置具有自动增量的列的起始值

Mar*_*nHN 63 sql-server

我有一个Orders包含以下字段的表:

Id | 小计| 税| 运输| 创建日期

Id列设置为autoincrement(1,1).

这将用于电子商务店面.有时,当前的电子商务商店会迁移到我的平台,并且他们已经拥有订单 - Order.Id例如,这可能意味着他们当前的订单9586.

我希望该autoincrement字段从该值开始.

我怎样才能做到这一点?

小智 110

重置SQL Server标识列:

检索表的标识Employees:

DBCC checkident ('Employees')
Run Code Online (Sandbox Code Playgroud)

修复身份种子(如果由于某种原因,数据库正在插入重复的身份):

DBCC checkident ('Employees', reseed)
Run Code Online (Sandbox Code Playgroud)

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

DBCC checkident ('Employees', reseed, 1000)
Run Code Online (Sandbox Code Playgroud)

插入的下一行将从1001开始.


Nic*_*rke 25

您需要将Identity种子设置为该值:

CREATE TABLE orders
(
 id int IDENTITY(9586,1)
)
Run Code Online (Sandbox Code Playgroud)

要更改当前表:

ALTER TABLE orders ALTER COLUMN Id IDENTITY (9586, 1);
Run Code Online (Sandbox Code Playgroud)

有关CREATE TABLE(Transact-SQL)IDENTITY(属性)的更多信息

  • 上面的ALTER TABLE命令在Microsoft SQL Server 2012中对我不起作用.它给出了以下错误:"关键字'IDENTITY'附近的语法不正确." 接受的答案中的DBCC命令正常工作. (4认同)

Pau*_*ams 10

另请注意,您通常无法为IDENTITY列设置值.但是,如果为表设置IDENTITY_INSERT为ON ,则可以指定行的标识.例如:

SET IDENTITY_INSERT Orders ON

-- do inserts here

SET IDENTITY_INSERT Orders OFF
Run Code Online (Sandbox Code Playgroud)

此插入将身份重置为最后插入的值.来自MSDN:

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