ACCESS自动编号字段的复位

时间:2007/2/27 20:25:55      阅读:6704          

说法一:

有兩種方法:
方法1:
truncate table 你的表名 --這樣不但將數據刪除,而且可以重新置位identity屬性的字段。

truncate table 你的表名 --这样不但交数据删除,而且可以重新置位identity属性的字段。
方法2:
delete from 你的表名
delete from 你的表名
dbcc checkident(你的表名,reseed,0) --重新置位identity屬性的字段,讓其下個值從1開始
dbcc checkident(你的表名,reseed,0) --重新置位identity属性的字段,让其下个值从1开始


说法二:

1.TRUNCATE TABLE
删除表中的所有行,而不记录单个行删除操作。

语法
TRUNCATE TABLE name

参数
name

是要截断的表的名称或要删除其全部行的表的名称。

注释
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。

DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。

对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。

TRUNCATE TABLE 不能用于参与了索引视图的表。

2.
DBCC CHECKIDENT
检查指定表的当前标识值,如有必要,还对标识值进行更正。

语法
DBCC CHECKIDENT
    ( 'table_name'
        [ , { NORESEED
                | { RESEED [ , new_reseed_value ] }
            }
        ]
    )

参数
'table_name'

是要对其当前标识值进行检查的表名。表名必须符合标识符规则。有关更多信息,请参见使用标识符。指定的表必须包含标识列。

NORESEED

指定不应更正当前标识值。

RESEED

指定应该更正当前标识值。

new_reseed_value

是在标识列中重新赋值时要使用的值。

注释
如有必要,DBCC CHECKIDENT 会更正列的当前标识值。然而,如果标识列是使用 NOT FOR REPLICATION 子句(在 CREATE TABLE 或 ALTER TABLE 语句中)创建的,则不更正当前标识值。

如果标识列上有主键或唯一键约束,无效标识信息可能会导致错误信息 2627

说法三:

如何定义自动编号字段的初始值和步进值?

问题:

 

 如何定义自动编号字段的初始值和步进值?
如何定义自动增加字段的初始值和步进值?
如何使删除过数据的自动增加字段的开始值重新从1开始?

 


回答:

 

 通过以下语句,你可以在建表的时候指定其起始值和步进值:

CREATE TABLE tblNewOrder2 (
  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 语句更改自动编号的同时不会保证修改后的自动编号仍然保持唯一性,因此会出现标识号重复的现象。要避免这一现象最好把自动编号设定为主键、或者不可重复。

Please realize that Jet won't prevent you from altering AutoNumber seed and increment values that produce duplicate values. However, if the AutoNumber column has been designated as the primary key or it contains a unique index, you will be prevented from saving rows with duplicates.

不过这些操作需要 JET 4.0。

如果不会用查询或者 JET SQL 去参考以下文章中的动画
http://access911.net/index.asp?board=4&recordid=77FAB11E1ADC

如何用查询设计向导建立一个查询
http://access911.net/down/eg/swf/createquery.swf

如何运行一段 jet sql 代码
http://access911.net/down/eg/swf/runsql.swf

 

说明:些段文章内容来自:http://access911.net

评论
  • Re:ACCESS自动编号字段的复位  (2007/3/26 17:10:06) by chaha 
    经验值不够,顶了再
  • Re:ACCESS自动编号字段的复位  (2007/6/1 13:04:31) by xfrog 
    方法一  比较好
  • Re:ACCESS自动编号字段的复位  (2007/6/15 19:16:22) by shitang1983 
    不知在什么情况下使用ACCESS,什么情况下使用SQL
  • Re:ACCESS自动编号字段的复位  (2007/12/24 21:20:17) by daokelu 
    谢谢,收藏。。。
  • Re:ACCESS自动编号字段的复位  (2009/6/3 14:10:27) by djf66 
    好好学习,天天向上!!
标 题:
 
姓 名:
 
主 页:

验证码:

评论:
 

Because of the cache,you may see your comments several minutes later.