Microsoft Access 重用记录 ID

Posted

技术标签:

【中文标题】Microsoft Access 重用记录 ID【英文标题】:Microsoft Access Reusing Record ID's 【发布时间】:2019-08-09 08:41:32 【问题描述】:

我有一个(Microsoft access office 365 数据库)。我在数据库的一个表中有许多记录。假设我有 5 条记录,编号分别为 1 到 5。现在当我删除第 3 条记录时。第 3 条记录现在消失了。我遇到的问题是,当我创建新记录时,我看到记录号 3 再次被用作记录号,尽管记录号 3 已被删除。这对我来说不应该发生。我最近从 2010 年升级了我们服务器上的 Microsoft Access 数据库引擎可再发行版 2016。认为这可能会解决问题。 archiveID 字段的数据类型和主键是自动编号。

请指教。

【问题讨论】:

这当然不应该发生!任何数据宏? The data type and primary key for the archiveID field is AutoNumber. 这真的是自动编号,据我所知,无论如何不应该发生这种情况。你确定是自动编号?另外,正如@ComputerVersteher 所说,是否有任何宏或 VBA 代码或可能会干扰它的东西? @FoxfireAndBurnsAndBurns 假设 OP 在表级别运行,没有执行宏或 vba。只有数据库触发器(数据宏)可以干扰那里。 【参考方案1】:

有时AutoNumber 可能会损坏,例如手动分配。尝试修复它:

INSERT INTO [TableName]([archiveID]) SELECT MAX([archiveID]) FROM [TableName];

并检查问题是否重复。

【讨论】:

AutoNumber 字段记住它最后插入的值。如果您手动将其分配给 N ,它将在下次生成 N+1 。可能是您的AutoNumber 以某种方式被破坏了。上面的 SQL 命令将修复当前自动编号的值。 我不确定如何处理您的回答 4dmonster。我有一个大约有一个存档表。 500 条记录。我是否在这个预填充的表上运行上述 SQL 语句?我不是在这里创建新表吗? 即使查询失败(pk 密钥违规)也能正常工作?你可以试试ALTER TABLE [TableName] ALTER COLUMN archiveID AUTOINCREMENT(1001,1)what 设置自动增量为1001。 我不知道如何应用上面的 SQL 语句。我的数据表称为存档。主键称为archiveID。是否在存档表上运行上述 SQL 语句?我是否将 TableName 替换为存档? 是的,将TableName替换为真实的表名(如果表名不包含特殊字符(只有字母和数字以及_(下划线),方括号可以省略)。

以上是关于Microsoft Access 重用记录 ID的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Access,vbYesNo 无法获取要保存的记录

Microsoft Access 表单保存记录

Microsoft Access 无法在追加查询中追加所有记录

如何将 Microsoft Access 表单中的单个记录打印到报表中

Microsoft Access VBA 中的记录已删除消息

Microsoft Access 无法添加不在记录集中的表的记录连接键