在 Access 数据库中,修改自增长字段(自动编号)的初始值及步长主要通过 SQL 语句实现。若在建表时,可使用 CREATE TABLE 语句配合 AUTOINCREMENT 参数指定起始值和步进值。若表已存在,则需使用 ALTER TABLE 语句配合 COUNTER 参数来修改下一个起始值和步长。例如,使用 ALTER TABLE 表名 ALTER COLUMN 字段名 COUNTER (起始值,步长) 即可重置种子。需要注意的是,Jet 引擎在更改自动编号的同时不会保证修改后的编号唯一性,因此建议将自动编号设为主键以避免重复。此外,已存在的记录无法直接修改自增长字段值,需删除后重新插入或去除自增长属性修改后再恢复。
Access 数据库自增长字段值的修改及初始值的设置
Access 数据库自增长字段值的修改及初始值的设置是本文我们主要要介绍的内容,Access 的自增长字段的值的修改,发现原来 Access 自增长比起 SQL Server 的标识列有一定的灵活性。比如 Access 的自增长字段可以直接 insert 记录时指定数值,但是不要和已经有的记录的该字段值重复了,会主键冲突的,而 SQL Server 就不行了。并且如果某个自增长序号已经有记录了,那么删除这条记录后还可以设定该值作为新记录的序号值。但是对于已有的记录,就不能修改自增长字段的值了,如果确需修改,有两种方法,要不就是删除原记录,重新插入数据时指定该字段值。要不就是去除自增长属性,修改成一个不重复的值保存后再将该字段类型设置成自动增长。那么,如果想设定 Access 数据库自增长字段的初始值该怎么办呢,这个较为简单,可以通过特定 SQL 语句即可实现。如果创建表结构时想设定自增长字段的初始值可以这条语句:CREATE TABLE 表名 ( 自增长字段名 AUTOINCREMENT (1000, 10), ItemId LONG, Quantity LONG) 如果表结构已经存在,可以通过这条语句修改:ALTER TABLE 表名 ALTER COLUMN 自增长字段名 COUNTER (2000, 50) 如果想复位自增长种子重新开始,可以这样:ALTER TABLE 表名 ALTER COLUMN 自增长字段名 COUNTER (1, 1) 好了,SQL Server 和 Access 两种数据库的自增长 (标识列) 都可以修改字段值了。有什么用呢,呵呵,很有用,对于我目前手同的工作来说,就是可以在程序中增加数据导入导出文本文件了,并且导入后一些关键的排序主键字段值不会发生改变,能保持原有数据的编号。(撰于 2025 年 5 月 24 日)
设定 Access 数据库自增长字段初始
本文介绍如何在 Access 数据库中调整表的自增 ID 起始值及步长,避免因 ID 不连续导致的数据对应问题,并提供具体的 SQL 语句示例。最近在做论坛数据转换程序。例如表 src, 表 dest 都有一个 id 自增长字段,(都是 access 数据库,起始值 1 ,步长 1) 表 src 中 id,char 两字段的值为 1、a 2、b 3、c 6、d 7、e 9、f 这样在将 src 中的记录插入表 dest 的时候会有麻烦,使得表 dest 中记录如下所示 1、a 2、b 3、c 4、d 5、e 6、f 这样造成 dest 和其它关联表中的数据难以对应。因此有必要在向表 dest 中插入记录时 设置其 id 字段的起始值,然后再进行插入操作 在 http://access911.net/fixhtm/71FAB01E13DC.htm?tt= 发现如下文字:通过以下语句,你可以在建表的时候指定其起始值和步进值:以下为引用的内容:CREATETABLEtblNewOrder2 ( OrderId AUTOINCREMENT (1000, 10), ItemId LONG, Quantity LONG) 你也可以用下面的语句修改下一个起始值和步进值:以下为引用的内容:ALTER TABLE tblOrder ALTER COLUMN OrderId COUNTER (2000, 50) 要重新开始:以下为引用的内容:ALTER TABLE tableName ALTER COLUMN OrderId COUNTER (1, 1) 在 VBE 界面里面用以下代码:以下为引用的内容:docmd.runsql "ALTER TABLE tableName ALTER COLUMN OrderId COUNTER (1, 1)" 这里要注意的是自动编号往往被用作标识记录的唯一性,但是 Jet 在用 DDL 语句更改自动编号的同时不会保证修改后的自动编号仍然保持唯一性,因此会出现标识号重复的现象。要避免这一现象最好把自动编号设定为主键、或者不可重复。(消息于 2009 年 9 月 1 日发布)
(转) 设定和修改 Access 数据库自增长字段初始值
(转) 设定和修改 Access 数据库自增长字段初始值 本文介绍了如何在 SQL 中使用 AutoIncrement 特性来自动为表中的字段生成唯一的递增值。包括创建表时指定起始值和步进值的方法,以及如何修改已存在的表结构以调整这些参数。http://www.cnblogs.com/zjneter/archive/2006/12/28/606575.html 通过以下语句,你可以在建表的时候指定其起始值和步进值:CREATE TABLE tableName( OrderId AUTOINCREMENT (1000, 10), ItemId LONG, Quantity LONG) 你也可以用下面的语句修改下一个起始值和步进值:ALTER TABLE tableName ALTER COLUMN OrderId COUNTER (2000, 50) 要重新开始:ALTER COLUMN OrderId COUNTER (1, 1)(截至 2014 年 12 月 18 日)
FAQ
已存在的记录能直接修改自增长字段值吗?
不能。对于已有的记录,不能直接修改自增长字段的值。如果确需修改,有两种方法,要不就是删除原记录,重新插入数据时指定该字段值。要不就是去除自增长属性,修改成一个不重复的值保存后再将该字段类型设置成自动增长。
修改自动编号后会出现重复吗?
会。Jet 在用 DDL 语句更改自动编号的同时不会保证修改后的自动编号仍然保持唯一性,因此会出现标识号重复的现象。要避免这一现象最好把自动编号设定为主键、或者不可重复。
如何复位自增长种子重新开始?
可以使用 SQL 语句:ALTER TABLE 表名 ALTER COLUMN 自增长字段名 COUNTER (1, 1),这样可以将下一个起始值复位为 1,步长为 1。