![]() |
1
3
唯一一次我在访问自动编号方面遇到困难是,在错误的情况下,我使用附加查询将自动编号键字段的值设置为低于当前最大值的数字。通过删除记录在编号中创建了间隙。访问允许您将值强制输入自动编号字段,有时(不总是,我不知道为什么),自动编号会重置为较低的数字。最后,在添加记录时,我遇到了“重复键”错误。除此之外,我多年来从未遇到过麻烦。 这个问题有两个答案,讨论一个增量值。据我所知,访问自动编号字段只能设置为“增量”(1)或“随机”,并且不能设置除1以外的数字增量。如果我错了,请开导我。 |
![]() |
2
3
遗憾的是,即使是微软的应用程序也并非一无是处。但这就是它的工作方式,我没有看到它失败,也没有听说它失败,除非是有意或偶然的颠覆。 不过,不要期望每个整数值都有一行。除了删除的行之外,它还将使用最多的数字来执行失败的追加操作。 |
![]() |
3
2
语句“如果删除了一些记录并压缩了数据库,则下一个标识将重置为使用的最低数字+1”是不正确的。这发生在Access 97中使用的Jet 3.5中,而不是Access 2000中使用的Jet 4.0中。 |
![]() |
4
2
大卫·W·芬顿写道:“喷气机自动编号字段不是一个标识字段。它只是一个带有特殊默认值的长整型字段。该默认值可以是递增的,也可以是随机的,但是由于它只是一个默认值,所以只要不违反索引,就可以将任何长整数值追加到字段中。”
这有点困惑。ace/jet-sql语法具有
但我想在这里说明的是(对注释来说太长了)它是“只有一个具有特殊默认值的长整型字段”的错误陈述。 考虑这个ace/jetsqddl(ansi-92查询模式语法):
执行时失败,并显示消息“结果表不允许有多个自动编号字段”。很明显,这里除了一个“特殊的默认值”之外还有其他的东西。
这个
如果使用ADOX等技术检查此表的属性(信息架构),您将发现只有使用identity关键字创建的列才会将autoincrement属性设置为true,并且此列的列_HasDefault为false,列_Default为空。因此,如果一个标识列确实有一个“特殊默认值”,那么引擎就不会告诉你。
不像
我不知道是否存在一个“特殊默认值”,相当于
顺便说一句,上面提到的错误消息表明“自动编号”是一个访问术语是错误的。似乎在ace/jet引擎级别,“autonumber”是非关键字的同义词
|
![]() |
5
1
我有一个以前在复制数据库中使用的表。有些自动编号是负数,有些则很大。对于复制的表,这是正常的,因此不能确定自动编号将大于前一个数字,它可能是负数。 |
![]() |
6
1
jet autonumber字段不是标识字段。它只是一个带有特殊默认值的长整型字段。该默认值可以是递增的,也可以是随机的,但是由于它只是一个默认值,所以只要不违反索引,就可以将任何长整数值追加到字段中。 递增的自动编号永远不会恢复为1,除非您已删除所有记录并压缩,或者在种子值损坏的情况下。后者在早期版本的jet 4(ServicePack6之前)中经常发生,在这里种子值将被重置,这将导致各种各样的问题,包括损坏的pk索引。幸运的是,这个问题最终得到了解决,而且由于Jet是一个Windows组件,所以几乎没有一台计算机能拥有比Jet4 Service Pack 8更高的版本。 正如前一天所说,如果递增的自动编号超过了长整型的最大正值,则可以得到负值,但这将指示您的表中可能有足够的记录,需要不同的数据库引擎,或者您不正确地将表视为临时表(即,追加和删除大的记录数量)。 正如其他人所说,唯一性不是由自动编号数据类型控制的,而是由索引控制的。如果创建了非唯一索引,则可以追加重复值。我无法想象为什么需要一个具有重复值的自动编号字段,但关键是如果不添加唯一索引,就可以这样做。由于大多数自动编号字段都用作代理主键,它们将具有唯一的pk索引,并且数据表将按pk顺序写入(集群)。关于唯一性,如果您使用自动编号作为代理pk,并且表中有任何应该是唯一的自然键(和 可以 唯一,即不允许空值),您还应该在自然键字段(单个字段或复合索引)上有一个唯一索引。 |
![]() |
7
1
首先,你的
注意当最大正值为
自动生成的值为0、2147483647、-2、2147483645、-4、2147483643、-6、2147483641等。 |
![]() |
8
1
我的答案是3串VBA代码!
|
![]() |
9
0
如果删除了一些记录并压缩了数据库,则下一个标识将重置为最低使用数字+1-如果清空了表,则下一个标识将在压缩后设置回1。 |
|
user3676604 · 如果自动增量值达到其极限,该怎么办? 7 年前 |
![]() |
user3292788 · Mysql:自动递增的最高值总是最近的吗? 7 年前 |
![]() |
Raptisoft · 在mysql中生成全局自动递增数字的最简单方法 7 年前 |
![]() |
TiggerToo · 具有重复值和多列主键的SQL自动增量id? 8 年前 |
|
Roknikus · 我的SQL语句中的“or”是什么错误? 8 年前 |
![]() |
Shomaail · 从具有自动递增列的表中复制数据 9 年前 |
![]() |
Gyula Madarasz · 编程获取自动递增主键列 9 年前 |
|
user3900958 · 我的变量没有递增 10 年前 |
![]() |
DDAZZA · 如何通过在rails中递增来保存唯一字符串? 10 年前 |