我发现自己在所有行标识列中使用“bigint”(64位整数),并不是因为我曾期望该表保存多行超过32位整数的最大值,而是因为随着时间的推移添加和删除行可能会导致标识值超过32位整数,我理解这会导致溢出错误并阻止后续的插入语句成功。
除了添加特殊逻辑以定期“碎片整理”或重新设置标识列之外,还有什么解决方法吗?或者我应该继续使用“bigint”来保证安全吗?它甚至安全吗?
根据我的计算,我的桌面需要大约1826年才能在紧/无限循环中递增0到2 ^ 64之间的整数,更不用说插入和删除那么多数据库行了。然后,一台比我快一千倍的计算机可以在一两年内完成。这可能是使用128位uniqueidentifiers作为数据库行键的好例子吗?