请教Paradox库中,对于AutoInc字段的处理方法. 急!!(200分)

  • 主题发起人 主题发起人 大花鸡
  • 开始时间 开始时间

大花鸡

Unregistered / Unconfirmed
GUEST, unregistred user!
Paradox库, 里面有AutoInc字段做主键. 在新增加一条记录之后,要返回ID值. 且不能使用Table一次把数据全读出来,会很多. 除了Insert之后,再按原查询条件打开一次之外,还有什么方法?
Query的RequestLive := True;之后,还是可能会出现 无法修改只读数据库 之类的提示,Append操作不是100%成功. 所以要求教一个可以100%成功的方法.
 
1.最好的办法就是不用paradox
:)
2.不要使用AutoInc, 使用自定义的主键. 然后每次插入记录之前生成最大值就行了.
 
俺说了不算啊, 领导要让AutoInc[:(]
 
懒人才会用AutoInc,所以就要有出问题的准备,祝你好运!
 
只能说你们领导是个白痴...
鉴定完毕
如果非要支持这个功能 那么扩展dataset吧
做自己的dataset支持自动取最后一个ID的这个功能.
 
試試table新增之後,refresh一下,呵呵
這個自段的值就出來了
 
换公司,走人
 
To: gaobangsheng,
不能使用 Table, 这是父子关系的表, 子表内的数据是父表的几个数量级, 时间一久, 光打开数据表,就费去很大内存.
To: wql,
RecordCount也不行的. 这种方法可行的前提时,数据只增不减. 一但前面的数据被删除, 这就会出现重复记录.

To: 不能没有你
"不要使用AutoInc, 使用自定义的主键. 然后每次插入记录之前生成最大值就行了". 所有的表中,只有一张表中的一个应该是唯一的主键的字段,没有被当做主键, 我就是像你这样维护了. 或者还有一个方法, 为防止在你取完Max之后,有数据被插进来, 导致主键值重复, 可以另维护一个表, 里面只有ID(自增的),和Flag, Flag值是自己写的, 取出这张表的Max(ID)之后,+1, 然后Update, 如果新的ID和Flag一样, 就表示可以使用这个ID值了,如果不一样, 说明在此期间, 有人增加记录了. 再+1, Update一次, 直到ID和Flag一样为止. 这只是我的一个想法, 感觉应该可以避免并发性, 只是要多建一张表, 如果类似的情况比较多, 数据库里这样的表也就多了, 还是麻烦.

目前只能是插一条记录之后马上取Max; 或者添加数据之前,记下Query的SQL内容, 在添加之后,恢复原来的内容, 读数据, 取最后一条.
个人认为, 如果并发数据不多时,可以采用取Max, 如果非常频繁的并发, 那就得采用读出来,取最后一条了.
哎, Leader脑袋被驴踢了...

谢谢大家了
 
后退
顶部