共享环境停锁表与解锁表

共享环境下锁表与解锁表
表a:日期,系统编号,.....等
系统编号:是用年第一位+月份+流水号(如:305000008)
原来没有用锁表处理,多人用就会产生相同的系统编号(系统编号是唯一识别码,不考虑用主索引)
现在用锁表方式处理,系统编号没有重复了,但是问题是当多用户同时使用时就会处现,表被锁其它用户只能等待(提示:尝试锁定,按esc取消),代码如下:(有没有更好的方法请指教)
thisform.y5.value=date()
set reprocess to automatic  
sele 表a
flock()     
k1=subst(dtoc(thisform.y5.value,1),4,3)
sele * from 表a where left(系统编号,3)=k1  order by 系统编号 into cursor tss
if _tally>0
go bottom
k2=int(val(right(系统编号,6))+1)
else
k2=1
endif
k3=allt(k1)+allt(padl(k2,6,"0")) &&&生成系统编号如:305000008

sele 表a
append blank
repl 系统编号 with k3
repl 日期 with date()
unlock


------解决方案--------------------
建議鎖行,試試速度.
------解决方案--------------------
vfp8.0 开始支持自增量字段了。
自增量无法实现:系统编号:是用年第一位+月份+流水号(如:305000008)

------解决方案--------------------
那就这样:
1、用锁行的方法。
2、还用你锁表的方法,但要这样:
另加1个字段表示编号的占用情况,如:字段X
锁表,产生编号,字段X标明此编号正在被XXX使用,解锁表,然后你再做其他操作,等XXX将其他字段保存后,将字段X清空,实际就是变向的行锁。这个方法锁表的时间短,来避免占用时间长的问题。