如果我没有为列设置IDENTITY,如何插入行并获取增量值?

时间:2014-07-10 13:48:56

标签: sql sql-server tsql

我有一张带有主键ShopId的表(设置为非独特)。

脚本添加ShopId的行如下(主键)

0
1
2
3
4
5
500
501
502
503  
8
9
10
600 -- higher value
400
300

当我使用INSERT语句时,我想用ShopId 601添加一个新行(带有自动增量)。

我想知道是否可以在数据库级自动执行此操作。

CREATE TABLE dbo.Shops
(ShopId int NOT NULL CONSTRAINT PK_Shops_ShopId PRIMARY KEY, 
Name nvarchar(64) NOT NULL, 
LocationId int NOT NULL )

1 个答案:

答案 0 :(得分:2)

根据您的评论,您的脚本必须只运行一次。

因此,请将您的列声明为identity,对于您的脚本,您可以使用

SET IDENTITY_INSERT db_name.table_name ON
run the script
SET IDENTITY_INSERT db_name.table_name OFF

这允许您将值插入IDENTITY列。

之后,增量将以最高值+1开始。

请参阅msdn