自動生成單據號

2022-06-09 12:09:10 字數 2282 閱讀 5372

--****************

--計算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系統的時候,就曾...