如何知道 autonumber(自动编号) 字段当前的值(100分)

  • 主题发起人 主题发起人 giswang
  • 开始时间 开始时间
G

giswang

Unregistered / Unconfirmed
GUEST, unregistred user!
要读取 autonumber(自动编号递增) 字段(字段名 ID)的当前的值,
增加记录时显示编号给用户。
不能用 insert 后读取MAX(ID),因为用户取消插入操作就可能会浪费一个值。
现在用 MAX(ID) + 1 来做,可能会使显示的值和实际插入的值不一致。
 
insert 后读取MAX(ID)可以呀,用户取消插入操作时就不应该读取MAX(ID)
只有插入成功了,才读取MAX(ID),这样就没有问题呀
 
我是这样
不知道好不好
1>先计算最大值
MaxID
Select Max(ID) From Table
2>Insert 的时候指定自动编号字段ID的值为原来的Max(ID) + 1
Insert into Table ( MaxID + 1,....)
Access数据库没发生问题
 
to slfeng:
如果你插入了100条记录,然后删除了后99条
结果你取出来的max(ID)=1
结果,实际上,你的实现根本就不是自动编号方式
to giswang:
不要担心浪费!!!!
所有的自动编号方式的就是要浪费的,除非你采用slfeng的方式.(倒也不是不好)
 
"slfeng" 的说法是可行的,但似乎这不是 Access 的正规方法,有些走偏门。
能找到 MICROSOFT 官方的方法吗?

to : 憔悴
增加记录时要显示新编号给用户,而用户如果取消插入,就让 ID + 1。
 
同意eric.youbin,长整型的够用了吧
 
我只是需要得到一个唯一的编码,不在乎是否是 “自动编号”
我想很多应用都是这样的
 
何必呢。呢增加成功再告诉用户不就可以了么?
如果你非要在增加前告诉用户,你就不能用自动增长型字段了。
slfeng地方法就可以了。
 
是Access库吗?
 
是 ACCESS 这东西,
没办法呀,不得不从 ORACLE 里的东西移植过来。
在 ORACLE 里用 Sequence.CurrVal 就可以解决所有问题了.
 
access无法和oracle比!
不能用自动编号,可以加一个数据表记录当前记录号,这样可以加速,max操作费时,
当用户insert操作时,死锁该表,其他用户不可读,保证在某一时刻不会有两个用户同时
得到同样的记录号。其实数据库就是这样操作的!
如果不考虑并发操作,可以不死锁表!
 
多人接受答案了。
 
后退
顶部