我有一个带有id字段的table1,类型为AutoIncrement。如果table2中没有相同id的记录,我需要将table1中的整个记录复制到table2中。然后我从table1中删除记录。
我需要知道,如果table1获取新记录,则id字段永远不会是之前使用过的数字。这是自动发生的,还是我需要做些什么来确保这一点?
我尝试删除一些记录并添加新记录,但它确实没有使用相同的ID,但我不确定这是不会发生的事情。
答案 0 :(得分:4)
可以很容易地在autoincremet字段中复制数字,但通常应用程序不能以这种方式工作。
Access会记住autoincrement字段中最后插入的值,并将其用于计算下一个值。您无法使用VBA中的表设计器或记录集将特定值插入自动增量字段,但是如果使用INSERT
SQL语句则可以。因此,如果autoincrement字段没有唯一索引,则可以插入任何值。此外,如果您插入的值小于最大现有数字,Access将自动生成重复项。
因此,我不建议在没有唯一索引的情况下依赖唯一的自动增量数字。
INSERT
SQL可用于重置计算而不删除字段/表,只需在查询构建器中运行查询或使用VBA:
INSERT INTO Table1 ( id ) SELECT 1;
这是我刚刚创建的自动增量字段ID
的表:
答案 1 :(得分:2)
自动增量从不使用相同的#,即使它已从表中删除。
它需要完全重置,以便从基础开始并创建新的#。
答案 2 :(得分:2)
确实如此,即使删除了记录,压缩了数据库等,MS Access中的自动增量字段也始终是增量的。 可以重置建议的数字,删除自动增量字段,执行表的副本,然后再次添加自动增量字段。