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

createtriggerJieShuon图书借阅表forinsertasbegindeclare@shintselect@sh=书号frominsertedifexis... 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
print '您所借的书不存在!'
--如何加条件,当所借的书不存在时,不插入记录到图书借阅表?
end

--插入操作:insert 图书借阅表 values(6,'C语言',getdate(),getdate()+30,'张三,'李四')
展开
 我来答
harleylg
推荐于2018-03-22 · TA获得超过1124个赞
知道小有建树答主
回答量:523
采纳率:0%
帮助的人:608万
展开全部
用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
匿名用户
2011-06-12
展开全部
希望对你有所帮助

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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
donghu1991
2011-06-11 · 超过11用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:36.6万
展开全部
可用事务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
更多追问追答
追问
额,出错了
您所借的书不存在!
消息 3902,级别 16,状态 1,过程 JieShu,第 17 行
COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
语句已终止。
追答
那你把commit tran放到else前面试下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式