在最近的一個案子中要管控返還的量(可分批還)不可大於借出的量
在表單的防呆卡控中已經有防呆且也有考慮在途中的返還
為了預防萬一想說 在新增返還時利用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
留言列表