嗨,大家好,我只有一个简单的问题:
当insert语句在标识列上失败时会发生什么?
例如,如果我插入一个带有标识列的行,那么该标识列将为1,并且再次插入但是失败并且不插入和数据.然后尝试再次插入,该行的标识现在是3?
任何建议将不胜感激.
谢谢.
这取决于数据插入失败的原因是什么.例如,如果值无效(类型错误),则不会增加标识值.但是,如果第一个插入成功,但随后被删除(通过事务失败并回滚),则身份值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.