트리거가 있습니다. 이름이 같은 장비 (항상 하나의 요소)가 이미 테이블에 있으면 롤백해야합니다. 그러나 항상 such equipment already exist
메시지로 트랜잭션을 롤백합니다. 장비가 테이블에있을 때와 없을 때. 문제가 무엇입니까?트리거는 항상 트랜잭션을 롤백합니다.
CREATE trigger [dbo].[ut_TEquipment]
on [dbo].[TEquipment]
for insert
as
begin
declare @var nvarchar(30)
select @var = name from inserted
print @var
if (@var in (select name from TEquipment))
begin
raiserror('Such equipment already exist',10,1)
rollback transaction
end
declare @amount int
declare @free int
select @amount = x.amount from inserted as x
select @free = y.free from TEquipWarehouse as y,inserted as x
where y.ideqwhs = x.ideqwhs
if (@free - @amount) <= 0
begin
raiserror('Free space in this warehouse is not enough!',10,1)
rollback transaction
end
else
begin
update TEquipWarehouse
set free = capacity - amount
from inserted as x
where idwhstype = x.ideqwhs
end
end