--****************
--計算id
--使用//表級排它鎖//防止使用者同時修改該記錄
--****************
create procedure getid
@xh integer,
@id integer out
as /*
如果想在連線一中鎖住整個表,不允許其他事務更新表中任何記錄,但可以讀取記錄,可使用holdlock選項,即(holdlock 等同於 serializable)
sql server 對併發的處理由它本身的鎖控制,貌似併發,其實有等待排隊的現象,只不過時間間隔短,所以併發數很多的時候,還是得進行人工鎖設計
在資料集上放置乙個範圍鎖,以防止其他使用者在事務完成之前更新資料集或將行插入資料集內。這是四個隔離級別中限制最大的級別。因為-發級別較低,所以應只在必要時才使用該選項。
如果想在連線一中鎖住整個表,不允許其他事務更新表中任何記錄甚至讀取表中任何記錄,可使用tablockx選項,
如果想在連線一中不鎖定表,允許其他事務更新表中任何行,使用nolock選項
*/set transaction isolation level serializable
if @xh=1
begin
select @id=id from dbo. 編號材料銷售
set @id=@id+1
update dbo.編號材料銷售 with (tablockx) set id=@id
endelse if @xh=2
begin
select @id=id from dbo.編號設定材料
set @id=@id+1
update dbo.編號設定材料 with (tablockx) set id=@id
endelse if @xh=3
begin
select @id=id from dbo.編號工程結算
set @id=@id+1
update dbo.編號工程結算 with (tablockx) set id=@id
endelse if @xh=4
begin
select @id=id from dbo.編號申請書
set @id=@id+1
update dbo.編號申請書 with (tablockx) set id=@id
endelse if @xh=5
begin
select @id=id from dbo.編號合同書
set @id=@id+1
update dbo.編號合同書 with (tablockx) set id=@id
endelse if @xh=6
begin
select @id=id from dbo.編號工程概算
set @id=@id+1
update dbo. 編號工程概算 with (tablockx) set id=@id
end
else if @xh=7
begin
select @id=id from dbo.編號採購清單
set @id=@id+1
update dbo.編號採購清單 with (tablockx) set id=@id
endelse if @xh=8
begin
select @id=id from dbo.編號材料入庫
set @id=@id+1
update dbo.編號材料入庫 with (tablockx) set id=@id
endelse if @xh=9
begin
select @id=id from dbo.編號零售材料
set @id=@id+1
update dbo.編號零售材料 with (tablockx) set id=@id
endelse if @xh=10
begin
select @id=id from dbo. 編號公升溢損耗
set @id=@id+1
update dbo.編號公升溢損耗 with (tablockx) set id=@id
endelse if @xh=11
begin
select @id=id from dbo.編號零星維修
set @id=@id+1
update dbo.編號零星維修 with (tablockx) set id=@id
end
commit transaction
go
自動生成單據號
計算id 使用 表級排它鎖 防止使用者同時修改該記錄 create procedure getid xh integer,id integer out as 如果想在連線一中鎖住整個表,不允許其他事務更新表中任何記錄,但可以讀取記錄,可使用holdlock選項,即 holdlock 等同於 seri...
生成單據編號
set ansi nulls on goset quoted identifier on gocreate procedure dbo sp getbi comp id varchar 8 type varchar 50 flag char 1 as 功能描述 取下乙個編號 引數說明 comp id...
自動生成業務單據流水號方案
我們在開發管理軟體的時候,常常遇到流水號 單據號 登記號 自動生成 控制和管理的問題。由於流水號 具有唯一性和連續性的特點,在實際開發過程中若處理不好,會產生流水號重複及斷號的問題。特別是多個併發用 戶同時儲存一張同樣的業務單據時,系統會返回多個相同的流水號。筆者以前在開發企業erp系統的時候,就曾...