Sql 消除MS Access主键字段中的空白

Sql 消除MS Access主键字段中的空白,sql,ms-access,primary-key,Sql,Ms Access,Primary Key,我正在用MS Access(支持SQL Server兼容语法)构建一个数据库,我有一个关于主键的问题。具体地说,我想找到一种方法来消除主键中的间隙,这样即使在删除记录后,主键也将是连续的。我不认为这会产生引用完整性问题,因为外键设置为ON UPDATE CASCADE 注意:我正在用SQL编写表创建语句,因此我可以用SQL脚本编写解决方案并运行它 是否有一个内置函数可以实现这一点,或者是否有一个触发器/存储过程需要我创建 谢谢你的帮助。不要这样做。无法重用自动编号/标识主键。由于没有间隙,因此不

我正在用MS Access(支持SQL Server兼容语法)构建一个数据库,我有一个关于主键的问题。具体地说,我想找到一种方法来消除主键中的间隙,这样即使在删除记录后,主键也将是连续的。我不认为这会产生引用完整性问题,因为外键设置为ON UPDATE CASCADE

注意:我正在用SQL编写表创建语句,因此我可以用SQL脚本编写解决方案并运行它

是否有一个内置函数可以实现这一点,或者是否有一个触发器/存储过程需要我创建


谢谢你的帮助。

不要这样做。无法重用自动编号/标识主键。由于没有间隙,因此不会造成性能损失,因此不会造成伤害。就这样吧,没问题。这将对数据库进行大规模更新和重组。例如,对于插入失败的任何数据库引擎,间隙都是正常的。Oracle、MySQl和SQL Server都能做到这一点

我不确定这是个好主意。为什么要更新主键值?在对话中,每条记录也可以通过其主键引用。例如,你可以说,“让我们谈谈记录#1”。制作另一个列来描述记录的编号/顺序并不能解决问题,因为当记录被删除时,我仍然需要找到一种方法来消除该列中的空白。请参见下面我的答案,但你到底为什么要这样做?任何逻辑原因?每条记录的主键/编号与每条记录中的其他数据一起显示,该记录可通过其#引用。这有点像我有一个包含规则列表的表。我不想让名单上的数字是1,2,4。