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 表单中的单个记录打印到报表中