【问题标题】:Can Autoincrement field ever use the same value twice?自动增量字段可以两次使用相同的值吗?
【发布时间】:2016-05-17 23:34:52
【问题描述】:

我有一个带有 id 字段的 table1,输入 AutoIncrement。如果 table2 中没有具有相同 id 的记录,我需要将 table1 中的整个记录​​复制到 table2 中。然后我从 table1 中删除记录。

我需要知道,如果 table1 获得新记录,则 id 字段永远不会是以前使用过的数字。这是自动发生的,还是我需要做一些事情来确保这一点?

我尝试删除一些记录并添加新记录,但它确实没有使用相同的 id,但我不确定这是否总是会发生。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    可以很容易地在自动增量字段中复制数字,但通常应用程序不会以这种方式工作。

    Access 会记住自动增量字段中最后插入的值,并将其用于计算下一个值。您不能使用表设计器或 VBA 中的记录集将特定值插入到自动增量字段中,但如果您使用INSERT SQL 语句,则可以。因此,如果自动增量字段没有唯一索引,则可以插入任何值。此外,如果您插入的值小于现有最大数量,Access 将自动生成重复项。

    所以我不建议依赖没有唯一索引的唯一自动增量数字。

    INSERT SQL 可用于在不删除字段/表的情况下重置编号,只需在查询生成器中运行这样的查询或使用 VBA:

    INSERT INTO Table1 ( id ) SELECT 1;
    

    这是我刚刚创建的带有自动增量字段ID 的表:

    【讨论】:

    • 如果你删除它或者如果手动创建表并拒绝添加主键
    • @SergeyS。上面的 INSERT 语句重置自动编号,即使字段 ID 定义为唯一键。 MS Access 存储最后插入的 ID,在本例中为 1,并在插入新记录时继续递增地添加 1。我没有提到,因为如果执行 INSERT 语句时表不为空,并且在计算新 ID 时不进行检查,这种行为会导致错误。删除并重新创建 ID 将重新计算所有 ID,并且表处于“一致”状态。话虽如此,您在帖子中写的完全正确。
    【解决方案2】:

    确实如此,MS Access 中的自动增量字段始终是增量的,即使删除记录、压缩数据库等也是如此。 建议的数字可以重置删除自增字段,执行表的复制,然后再次添加自增字段。

    【讨论】:

      【解决方案3】:

      自动增量从不使用相同的#,即使它已从表中删除。

      它需要完全重置,以便从基础开始并创建新的#。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-05
        • 1970-01-01
        • 2021-12-07
        • 1970-01-01
        • 1970-01-01
        • 2016-01-02
        • 1970-01-01
        • 2014-02-21
        相关资源
        最近更新 更多