MS SQL触发器的问题,如何加条件判断,如果条件不满足,不执行插入操作,具体看注释部分

2025-02-16 02:17:16
推荐回答(3个)
回答1:

用ROLLBACK或者RAISERROR,或者两个一起用。

create trigger JieShu
on 图书借阅表
for insert
as
begin
declare @sh int
select @sh=书号 from inserted
if exists(select * from 图书库存表 where 书号=@sh)
delete 图书库存表 where 书号=@sh
else
BEGIN
RAISERROR ('您所借的书不存在!书号:%d', 16, 1, @sh)
ROLLBACK TRANSACTION
END
end

回答2:

希望对你有所帮助

CREATE TRIGGER tr_zd_goods_del ON dbo.zd_goods
FOR DELETE
AS
Declare
@goodsID int,
@goodsdm varchar(12)
SELECT @goodsID=goodsid,@goodsdm=goodsdm
FROM deleted
IF Exists(select top 1 goodsid from BOM_goodsbh where goodsID=@goodsID) GOTO test --BOM中
Return
test:
begin
raiserror('此项(%s)已被引用,不能执行删除操作,如需删除请联系管理员!',16,1,@goodsdm)
rollback tran
end

回答3:

可用事务rollback tran语句:
begin
begin transaction
declare @sh int
select @sh=书号 from inserted
if exists(select * from 图书库存表 where 书号=@sh)
delete 图书库存表 where 书号=@sh
else
rollback tran
print '您所借的书不存在!'
commit tran
end