访问中的主键不按顺序
primary key in access not in order
我最近开始使用访问权限,到目前为止,我没有遇到任何问题,但我担心随着数据库的不断扩展,它可能会给我带来一些问题。
当我创建 tables 时,Microsoft Access 建议使用它们的默认主键,我通常这样做,问题是由于某种原因,当 table 被填充时,主键 "ID" 保持不一致,它将从 4 到 2679(只是随机示例)并且它会跳过很多数字,如果我是正确的,这个主键会自动设置为自动递增,对吗?那么为什么它会跳过中间的所有数字?
Table 使用 Visual Studio 和 C# 语言通过简单的 SQL 查询填充。请参阅下面我访问的照片 table
enter image description here
SQL 服务器曾经这样做(在 v6.0/6.5 和可能更高版本中)。可以想象,Access 使用相同的机制。
IDENTITY 通过将下一个数字(或最后一个,谁在乎)存储在数据库中的磁盘上来工作。为了加快访问速度,它被缓存在内存中,只是偶尔写回磁盘(毕竟是 SQL Server)。根据 SQL 服务器关闭的方式,可能会错过磁盘更新。当服务器重新启动时,有一些方法可以检测到光盘版本已过时并将其提高一些。
Oracle 对 SEQUENCE 也是如此。这在多机集群安装中变得复杂,其中有多个服务器用于同一个数据库。为了支持这一点,服务器第一次必须获得一个序列号时,它获得了很多序列号(SEQUENCE 定义的 Cache 变量部分,默认为 20 IIRC)并更新了 SEQUENCE 假设它将使用所有分配的数字。如果它没有使用所有分配的号码,那么使用的号码就会有差距。 (这也意味着对于集群中的 SEQUENCE,SEQUENCE 编号不一定按顺序使用:机器 A 写入 21,B 写入 41,A 写入 22,等等)我从未检查过但我假设 SQL 故障转移群集中的服务器可能具有相同的间隙。
将相同的机制应用于 Access,其中没有用于数据库的中央服务器,只是可能在每个客户端的机器上有很多本地服务器。您可以看到存在差距的可能性。
我最近开始使用访问权限,到目前为止,我没有遇到任何问题,但我担心随着数据库的不断扩展,它可能会给我带来一些问题。 当我创建 tables 时,Microsoft Access 建议使用它们的默认主键,我通常这样做,问题是由于某种原因,当 table 被填充时,主键 "ID" 保持不一致,它将从 4 到 2679(只是随机示例)并且它会跳过很多数字,如果我是正确的,这个主键会自动设置为自动递增,对吗?那么为什么它会跳过中间的所有数字?
Table 使用 Visual Studio 和 C# 语言通过简单的 SQL 查询填充。请参阅下面我访问的照片 table
enter image description here
SQL 服务器曾经这样做(在 v6.0/6.5 和可能更高版本中)。可以想象,Access 使用相同的机制。
IDENTITY 通过将下一个数字(或最后一个,谁在乎)存储在数据库中的磁盘上来工作。为了加快访问速度,它被缓存在内存中,只是偶尔写回磁盘(毕竟是 SQL Server)。根据 SQL 服务器关闭的方式,可能会错过磁盘更新。当服务器重新启动时,有一些方法可以检测到光盘版本已过时并将其提高一些。
Oracle 对 SEQUENCE 也是如此。这在多机集群安装中变得复杂,其中有多个服务器用于同一个数据库。为了支持这一点,服务器第一次必须获得一个序列号时,它获得了很多序列号(SEQUENCE 定义的 Cache 变量部分,默认为 20 IIRC)并更新了 SEQUENCE 假设它将使用所有分配的数字。如果它没有使用所有分配的号码,那么使用的号码就会有差距。 (这也意味着对于集群中的 SEQUENCE,SEQUENCE 编号不一定按顺序使用:机器 A 写入 21,B 写入 41,A 写入 22,等等)我从未检查过但我假设 SQL 故障转移群集中的服务器可能具有相同的间隙。
将相同的机制应用于 Access,其中没有用于数据库的中央服务器,只是可能在每个客户端的机器上有很多本地服务器。您可以看到存在差距的可能性。