自动编号字段的值能不从 1 开始吗?

来源:百度文库 编辑:神马文学网 时间:2024/04/28 01:04:52
 先建好你所需要的表(包含自动编号字段)(在这里称为第一个表),请先不要输入任何数据,然后新建第二个表,只包含一个长整数类型的字段,其字段名与第一个表中的自动编号字段名相同,在这个表中输入一条记录,其值比你想要在第一个表中自动编号字段的起始值小1。创建一个追加查询,从第二个表添加到第一个表,然后删除第二个表,再打开第一个表,删除刚才添加的记录。这样,再向第一个中输入数据时,就会从你指定的编号开始。

第二种方法:创建一个带参数的追加查询如下:

PARAMETERS [Number] Long;
ZX C,jG}'a0M/FD0INSERT INTO tblAuto ( intNumber )
7{:vHk_%n0SELECT [Number] AS Expr1;


其中:tblAuto 为你的包含自动编号字段的表的表名;      Number 为运行这个查询时,所输入参数,即:你指定的起始编号. 问题:
S)M$P|bT0
@7y]5S,T/\-[\s0自动编号的字段在删除记录后编号不连续
"v-[ lg0|[0比如原来有10条记录,删除其中第2条,序号2就变空号了Office中国社区门户F(Sc%n*RBB
当表中某条记录被删除后,如何使后续的记录自动重新编号?
Office中国社区门户i;fI QLano r B

回答:
E5m#]r#] CM7_#S}0

H"a$S;b1^G/F0 关于自动编号和压缩数据库 
$M c Fx0rP;KAeW0你必须理解,自动编号(长整型)的目的不是为了使记录号连续,其用途有2个Office中国社区门户MvR I'S j`
1、标识记录的唯一性Office中国社区门户o Y6^Xs%| eVs1qb)_o
2、标识记录的生成顺序
h^^1hrR0基于上述原因,你想使用自动编号字段来表示连续的记录号本身这个思路就是错误的。
Office中国社区门户Z;Z3h| X

Office中国社区门户#du PB6]j'Z'd

Office中国社区门户wT Q`u1n'm/gw

如何表示连续的记录号有以下几个办法:Office中国社区门户s/i;k/x9Q#N,u
1、再建立一个专门用来存放记录号的字段,比如 RecordNoOffice中国社区门户-a3w{8^+wrz)O6E7el0F
    添加记录时可以用 MAX(recordNO)+1 的方法。
2?%L{9^#VV$HV0    当要删除某条记录时,比如这条记录的recordNo=6,我们用

[sZb+Z'{3X0 Office中国社区门户QP|)I!X7?UI V

     delete from table where recordNo=6 Office中国社区门户*J({.\jZ/yT

M:]"sh.X,[ fg0 Office中国社区门户&rMEz9gD*C

    来做。这样就会产生空号,然后再用

F\mitU'h)Z,Q0

^3@'g | q)abP0     update table set recordno=recordno-1 where recordno>6 Office中国社区门户(e!C p2]+i4d

}0mL!_T]4E]$T0 Office中国社区门户'jDQ Q#YO

    即可Office中国社区门户H%n+kf*?g

!P&NZ:cy+sV m0

,^@ Se } l0 Office中国社区门户-_o-G$Y%G6XF

2、在表中不存放记录号的数据,用sql查询自动生成Office中国社区门户9T p ] iB6ddx M

Office中国社区门户!?_(tZ(f\

select [id],a,b,c,(select count(*) from table table2 where table2.[id]<=table1.[id]) as recordno from table table1 order by [id]
|VA(I5k%o$e S#Yu A7X0

-e'J%l ETO!ka4S0 Office中国社区门户hzs6O.J9s

    其中 [id] 字段为自动编号字段Office中国社区门户jp9}Dq"W-YHdm

O8N6Ad2Y1n`C}0

a9N%Gt7G`Yc0

f3uY)\"_'S8A Q+p,xo0 

6{p)S,X \m E0 Office中国社区门户9F R d!VmJ}9]4M

ch a6l DZ9\0

Igf4Acba0
q:Equ5LZ*`0问题:
Tt.wQ1]D.c4y0Office中国社区门户Js&\ _$x
ACCESS2000中 有一自动编号的字段ID,ID 已有值分别为1,2,3,4,5,6,7,将6,7删除后,再压缩数据库,再新加记录,在不同的电脑上会出现不同的情况如下:Office中国社区门户i%v BOhi:p9\
1,新ID 为6,7,8,9
VzoU2Zz,i02,新ID 为8,9

.cj5RR'?[0Office中国社区门户`X$|wc ]{+M%[y p

Fpw%Q hqV0在ID为1,2,3,4,5,6,7的情况下,将4,5删除后,再压缩数据库,再新加记录,在不同的电脑上会出现不同的情况如下:
.C$]9MzsPG-[0C03,新ID为4,5,然后是6(出错,因为是主键不能重复)
n)GyE`!Q04,新ID为8,9。。。
~6d$WB#Y!cr;z0请问哪中情况是正常的,其他不正常的原因是什么。谢谢!!
H0vR^D:K0

m-R!Z$Um/y5xH0

6]&x6mEhF1Hr0 

E!wb I)UM(}z0 Office中国社区门户Go;k3N0Qfi

Office中国社区门户 Zq0}X&Y'k g

Office中国社区门户"V-qD w4d$Hu&P6I-E

回答:Office中国社区门户"Tun0aR7U y+nV(P

\6}*T }"CQh0 你说的几种情况全部属于正常

2x b8Q{(@j0

/u;P DjH*e#h0 Office中国社区门户O-H)a7G ]6kp*];o

1、自动编号是由 JET  引擎来设置的Office中国社区门户{z-|7zSGV&p
2、自动编号 会自动被作为主键,而且有不重复索引
2v(s+Bo9n ug*FB03、你可以不要将自动编号作为主键以及不要建立索引,将索引改为无
3X.\%M6zWp7bm%{.A Xr)b04、自动编号的起始值和步进值都是可以用程序等方法更改的,不是固定的Office中国社区门户GgM;sV
5、虽然你更改了起始值和步进值,但是如果新生成的值违反了“主键”或者“索引”的约束会产生错误Office中国社区门户,_cU ] U,sy!Hw
6、默认情况下,即使删除了记录,这条记录的自动编号也不会恢复。
Office中国社区门户V4V~E V6R

b9oCu&J7a0以下是对情况的分析Office中国社区门户Ag-i"R+A(p&biH
1、你使用了比如压缩修复、UPDATE、ALTER TABLE 等方法更改了初始值
2Wz+XK6wH P02、默认情况下就是这样Office中国社区门户%p+@[EmN
3、因为使用了压缩修复等方法,导致初始值重新从4开始,但是增加到6的时候,原来记录里面已经存在6这个编号了,违反了主键约束,所以产生错误Office中国社区门户8x.M"Wo$~P'e
4、默认情况下就是这样。