gpt4 book ai didi

ms-access - 在多用户数据库中 Access 自动编号并保持唯一性

转载 作者:行者123 更新时间:2023-12-02 22:36:10 26 4
gpt4 key购买 nike

关于 Access 的一些普遍问题,但希望有一个相当简单的答案:

当您在共享多用户数据库中使用自动编号时,Access 是否会采取任何措施来确保它分配的编号是唯一的,这与其他用户同时添加记录时有何不同?

它是否立即为连接到该表的第一个用户声明下一个编号,还是等到新记录即将保存并在分配该记录之前检查表中所有已保存记录的最大编号下一个号码?

它的独特性在多用户环境中是否稳健?

最佳答案

为了充分回答您的问题,区分以下内容非常重要

  • “Access ”(应用程序),以及

  • “Access 数据库引擎”(又名“ACE”)及其前身 Jet 数据库引擎。

When you use autonumber in a shared multi-user database, is Access doing anything in particular to ensure that the number it assigns is unique what with other users adding records at the same time?

[...]

Is its uniqueness robust in a multi-user environment?

是的。与许多其他数据库引擎一样,ACE 通过通常在将记录提交(写入)到表时分配该编号来确保标识列(Access 称之为“自动编号字段”)在多用户环境中是唯一的。不过,ACE 确实为 Access 提供了提前获取其自动编号值的机会(见下文)。

Does [Access] immediately claim the next number for the first user who has connected to that table,

没有。简单地“连接到”表(例如,通过执行 SELECT 或打开记录集)不会影响自动编号字段的计数器。

or does [Access] wait until the new record is about to be saved and check the highest number of all saved records in the table just before assigning the next number?

这取决于...

如果“表”是 ODBC 数据源的链接表(例如,具有 IDENTITY 列的 SQL Server 表),那么是的,Access 会“等待”,直到用户执行将提交(保存)新记录的操作,此时它将新记录提交到数据库服务器,然后检索该记录的自动编号值(例如,通过 SQL Server 中的 SELECT @@IDENTITY 或其他数据库引擎的类似机制) .

但是,如果“表”是 native ACE/Jet 表,那么您可能会注意到,在开始键入新记录(例如,在数据 TableView 中或在绑定(bind)表单中)后,新的自动编号值立即出现。在这种情况下,Access(应用程序)告诉 ACE(数据库引擎)它可能想要插入一条新记录并立即请求自动编号值。 ACE 返回该值并递增计数器,以便发出相同请求的另一个用户将获得序列中的下一个数字。请注意,此过程“消耗”自动编号值:它将被使用(如果用户保存记录)或被丢弃(如果用户决定不保存记录),但不会重新使用。这就是为什么

  • “递增”(而不是“随机”)的 ACE 自动编号字段有时会存在“间隙”,并且

  • 如果您开始输入数据,请按 Esc 取消插入,然后再次开始输入,自动编号值会有所不同(因为您“消耗”了先前的自动编号值,即使您没有保存记录)。

关于ms-access - 在多用户数据库中 Access 自动编号并保持唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com