2
A
回答
2
不,你不希望它重复使用它们。永远不要认为身份没有差距(它们也不会被重复用于删除)。
差距对任何人都不重要。如果有人要求提供这种功能,则需要进行大量且昂贵的更改才能手动创建ID,并且这种更改会因竞争条件而导致数据完整性问题的风险。此外,这种昂贵而有风险的变化将不会产生任何收益。系统运行速度会更慢(手动生成ID时需要更长的时间,特别是如果您要填补空白的话),并且如果您重复使用已删除的ID,并且存在未被删除的子记录(因为其他人)认为正式实施PK/FK关系是一个坏主意(或者错过了一张桌子)。这是我个人不会接受的要求。这对数据来说太危险了。
6
不,它不应该...
身份的产生必须是在事务之外,或者它是行不通的。
3
回滚不会重置种子值(这意味着身份值会有差距)。
例如:如果你插入5行,其身份值:
5, 6, 7, 8, 9
,并做了回退,下一个标识值仍然会10
,即使5 - 9人失踪。
3
不,并有很好的理由。假设有两个事务处于活动状态,每个事务都使用相同的标识。说交易1抓取数字(1,3,4,7,9)和交易2抓取(2,5,6,8)。事务2然后回滚。身份应该回滚到什么程度?如果身份被重置,以便“下一个”值是事务分配的第一个或最后一个值,那么当尝试使用该数字时,下一个从身份中获取数字的程序可能会遇到某种变体的重大违规。出于这个原因,身份号码分配没有交易。
分享和享受。
相关问题
- 1. SQL Server事务回滚
- 2. SQL Server回滚事务
- 3. SQL-Server事务回滚
- 4. SQL Server 2008中的错误回滚
- 5. 帮助SQL Server程序回滚
- 6. 我可以回滚动态SQL在SQL Server/TSQL
- 7. 在sql server中事务回滚的机制是什么?
- 8. SQL Server Management Studio中用于回滚的脚本是什么?
- 9. 使用Visual Basic.net和SQL Server 2008的TransactionScope回滚
- 10. 如何回滚SQL Server数据库中的数据?
- 11. 创建SQL Server回滚脚本的最佳方法?
- 12. linq回滚到sql?
- 13. 在SQL中回滚
- 14. 杀死回滚SQL
- 15. SQL Server'回收站'
- 16. SQL Server会在终止后回滚单个语句吗?
- 17. 无法获取SQL Server 2012事务回滚
- 18. TSQL - 事务回滚 - PAGEIOLATCH_EX等待类型 - SQL SErver 2005
- 19. 在SQL Server中一起使用XACT_ABORT和TRY CATCH break tSQLt回滚
- 20. 使用C#还原SQL Server 2005数据库。回滚问题
- 21. SQL Server Management Studio 2008如何轻松回滚?
- 22. SQL Server CE回滚不会撤消删除
- 23. 如何在sql server中提交和回滚事务?
- 24. SQL Server事务回滚或使用Petapoco提交?
- 25. 如何回滚或SQL Server提交事务
- 26. SQL Server - 在失败触发器上回滚
- 27. 在SQL Server上回滚反转和解锁表格
- 28. 仅在一列上回滚事务 - SQL Server 2008
- 29. 在Sql Server 2000中回滚和更新命令
- 30. Liquibase回滚自定义SQL
请看这里:http://stackoverflow.com/questions/282451/sql-identity-autonumber-is-incremented-even-with-a-transaction-rollback – 2010-10-21 15:44:28