close

在最近的一個案子中要管控返還的量(可分批還)不可大於借出的量

在表單的防呆卡控中已經有防呆且也有考慮在途中的返還

為了預防萬一想說 在新增返還時利用Table Trigger 來做最後一次檢查

IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)   <-- 判斷為insert Trigger
begin

DECLARE @vQuantity nvarchar(20)

DECLARE @vCBQuantity nvarchar(20)

select @vBQuantity=BQuantity   FROM inserted  --->本次還的數量

select @vCBQuantity=isnull(cast(sum(cast(BQuantity as Float)) as nvarchar(20)),'0') from [dbo].[SampleBack] where ....-->歸還數量合計

select @vQuantity=Quantity from dbo.SampleBorrowDetail where ..... -->借用數

--if (cast(@vQuantity as Float) <(cast(@vCBQuantity as Float)+cast(@vBQuantity as Float)))

--本想說整個Trigger 完成後資料才會真正insert 到 SampleBack 結果我錯了導致在在歸還時明明還有量卻一直卡住

if (cast(@vQuantity as Float) <(cast(@vCBQuantity as Float)))
begin
       set @errstr='歸還數量總和'+ @vCBQuantity+'大於原借用數'+@vQuantity
       raiserror(@errstr,16,1)
       rollback transaction

end

end

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 JosephChou 的頭像
    JosephChou

    Joseph A-Sa-BLue

    JosephChou 發表在 痞客邦 留言(0) 人氣()