SQL Server表中插入失败,自增ID还会增加吗?
答案是会的。
在 SQL Server 中,如果表的主键是自增(IDENTITY),当插入操作由于某种约束(如 UNIQUE 约束或 FOREIGN KEY 约束)失败时,自增的 ID 值仍会递增,即便插入失败了。
举个例子,如果当前表的自增列的值是 100,下一次插入操作尝试分配 ID 101。但如果由于某种原因(比如 UNIQUE 约束冲突)插入失败了,ID 101 不会重新使用,而是直接跳到 102 分配给下一个成功的插入操作。
这是因为自增 ID 的生成和分配在插入操作开始时就已经执行,即使后续插入失败,生成的 ID 也不会被回滚或重新使用。
Reuse of values - For a given identity property with specific seed/increment, the identity values aren't reused by the engine. If a particular insert statement fails, or if the insert statement is rolled back then the consumed identity values are lost and aren't generated again. This can result in gaps when the subsequent identity values are generated.
作者: 马行空的博客
出处: https://www.cnblogs.com/netry/p/18460706
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。