|
2#

楼主 |
发表于 2002-6-12 19:36:00
|
只看该作者
各位版主:
老革命又遇新問題,
現在如果在一個單表上發生觸發,在觸發的同事,去更新更一個表的值
alter trigger utr_trade_request_line_ins on trade_request_line after insert as
declare @surplus as decimal(8,2),@col as int
select @col =(select wh_ins_line_no from inserted)
select @surplus = trade_wh_ins_line.wh_ins_line_pt - inserted.request_line_pt from trade_wh_ins_line inner join inserted on trade_wh_ins_line.wh_ins_line_no = inserted.wh_ins_line_no
--分別給變量賦值,@col為預操作的入倉項,@surplus為預操作的結余值
if @surplus < 0 goto error
if @@error <>0
print 'Error: unknown error !'
begin transaction
update trade_wh_ins_line set wh_ins_line_pt = @surplus where wh_ins_line_no = @col
if @@error <> 0 goto problem
commit transaction
problem:
print 'error:unknown error!'
rollback transaction
error:
raiserror('Error:wh_ins_line_pt < request_line_pt!',16,1)
---------------------------------------------------
比如上例:
隨然已可控制,在更新值為負的情況下,對更一表的更新跳過,
但在觸發表上的操作缺已發生,(即已有新數據插入觸發表,但另一預同時操作的表缺沒有同步處理,同時取消,或同時更新)
請問高手,如何在變鎕為負的情況下,同時中斷觸發表的插入操作,
又不占用一個ID數?
如果用事務怎么寫好哪?
請指導。 |
|