前面《SQL Server数据库自增长标识列的更新修改操作方法》一篇中我已经提到了如何修改sql server数据库的自动增长的标识列的值方法,但该方法中使用的sql语句并不适用于access数据库,那么access数据库如何修改自增长字段的值呢,目前我还没找到跟sql server中一样方便的sql语句处理方法。不过也可以通过一些其它途径进行修改,只是感觉方法笨了点,有点绕圈。
今天特意测试了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两种数据库的自增长(标识列)都可以修改字段值了。有什么用呢,呵呵,很有用,对于我目前手同的工作来说,就是可以在程序中增加数据导入导出文本文件了,并且导入后一些关键的排序主键字段值不会发生改变,能保持原有数据的编号。其它还有很多用处,大家可以灵活运用了,呵呵。