SQL Server标识列插入失败

joh*_*nie 2 sql-server

嗨,大家好,我只有一个简单的问题:

当insert语句在标识列上失败时会发生什么?

例如,如果我插入一个带有标识列的行,那么该标识列将为1,并且再次插入但是失败并且不插入和数据.然后尝试再次插入,该行的标识现在是3?

任何建议将不胜感激.

谢谢.

Mii*_* L. 5

这取决于数据插入失败的原因是什么.例如,如果值无效(类型错误),则不会增加标识值.但是,如果第一个插入成功,但随后被删除(通过事务失败并回滚),则身份值IS递增.

-- Next identity value = 1
INSERT INTO Table1 (
    field1)
VALUES ('a')

-- Next identity value = 2    
BEGIN TRAN
INSERT INTO Table1 (
  field1)
VALUES ('b')

-- Next identity value = 3    
ROLLBACK TRAN

-- Next identity value = 3, although the insertion was removed.    
INSERT INTO Table1 (
  field1)
VALUES ('c')

-- Next identity value = 4
Run Code Online (Sandbox Code Playgroud)

第一个插入将具有标识列值= 1,第二个插入失败,第三个插入将具有标识列值= 3.