2010-10-21 58 views

回答

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然后回滚。身份应该回滚到什么程度?如果身份被重置,以便“下一个”值是事务分配的第一个或最后一个值,那么当尝试使用该数字时,下一个从身份中获取数字的程序可能会遇到某种变体的重大违规。出于这个原因,身份号码分配没有交易。

分享和享受。