to 楼主多人同时取的时候是临时编号,取的时候给tmpID +1 ,而保存的时候则是保存真实编号,明白吗?
设置事务的隔离级别。。下面的过程是我们用的CREATE PROC SP_GetKeyValue (@aTblName char(50),@aKeyvalue numeric OutPut) as begin SET TRANSACTION ISOLATION LEVEL SERIALIZABLE begin tran KeyValue UPDATE T_SYS_TBLLIST with (Xlock) SET KEYVALUE=KEYVALUE+1 WHERE upper(TBLNAME)=upper(@ATBLNAME) SELECT @AKEYVALUE=KEYVALUE FROM T_SYS_TBLLIST WHERE upper(TBLNAME)=upper(@ATBLNAME) Commit tran KeyValue SET TRANSACTION ISOLATION LEVEL READ COMMITTED RETURN end
(Access也需要大侠顺便指教。)
(@aTblName char(50),@aKeyvalue numeric OutPut)
as
begin
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE begin tran KeyValue
UPDATE T_SYS_TBLLIST with (Xlock)
SET KEYVALUE=KEYVALUE+1
WHERE upper(TBLNAME)=upper(@ATBLNAME) SELECT @AKEYVALUE=KEYVALUE
FROM T_SYS_TBLLIST
WHERE upper(TBLNAME)=upper(@ATBLNAME)
Commit tran KeyValue
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
RETURN
end
方法二:提交时插入编号(POST前,调用函数取值,设置编号)
总之编号与提交的间隔越短越好,如果有重复,数据库表对主键或唯一约束自动检查。
能给字符型字段自动编号吗?逗!