我有一个访问数据库,我使用以下命令修改了一些表:
ALTER TABLE TestTable ALTER COLUMN ID AUTOINCREMENT(1001,1)
该表的第一列 ID 为自动编号。创建表后,我进行了压缩和修复。但是在插入数据时,第一个 ID 设置为 1 而不是 1001。如果我不进行紧凑修复,则第一个 ID 按预期设置为 1001。我无法控制何时执行紧凑修复。那么有没有办法确保 ID 总是从 1001 开始?
我有一个访问数据库,我使用以下命令修改了一些表:
ALTER TABLE TestTable ALTER COLUMN ID AUTOINCREMENT(1001,1)
该表的第一列 ID 为自动编号。创建表后,我进行了压缩和修复。但是在插入数据时,第一个 ID 设置为 1 而不是 1001。如果我不进行紧凑修复,则第一个 ID 按预期设置为 1001。我无法控制何时执行紧凑修复。那么有没有办法确保 ID 总是从 1001 开始?
自动编号的种子值不是静态的。添加一行后,种子将重置为先前的种子值加上增量。
compact 的一个有意功能是根据 autonumber 字段中包含的当前值重置种子。
没有简单易行的解决方法。
您可以创建一个autoexec
宏来检查您的自动编号的当前种子值,如果它小于 1001,则执行您的 DDL 语句。这将在您每次打开数据库时按照您的意愿进行设置。
或者您可以添加一个 ID = 1000 的虚拟行TestTable
,并确保您永远不会删除该行。但这很丑陋。
或者您可以制作 ID Long Integer 并创建您自己的自定义自动编号代码来确定您存储在那里的值。但这并不容易或不方便。