gpt4 book ai didi

linq-to-sql - SQL 不会在 INSERT 错误时增加主键

转载 作者:行者123 更新时间:2023-12-02 07:49:38 26 4
gpt4 key购买 nike

今天有点惊讶地发现,当插入语句出错时,我的自动递增主键仍然会递增,结果是我们的表中有“缺失”的数字。

这样设计 SQL 有什么原因吗?有没有办法覆盖这种行为?

我正在通过 Linq-to-SQL 访问。

最佳答案

这是为了处理并发性并使其尽可能快的设计(如果同时发生 3 个插入并且回滚 1 个会发生什么......这会搞砸一切)..当插入启动 sql服务器确定身份的值..如果发生回滚,这些值不会被重用..除非您想在每次回滚后运行 DBCC CHECKIDENT,否则您无能为力

如果您需要一个能够识别差距的查询,请查看此 How to return all the skipped identity values from a table in SQL Server

SQL Server 的下一个版本将包含 sequences,这可能会帮助您解决其中的一些问题,请看这里:A first look at sequences in SQL Server Denali

关于linq-to-sql - SQL 不会在 INSERT 错误时增加主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4511332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com