错误!不能销售 消息 3609,级别 16,状态 1,第 1 行 事务在触发器中结束。批处理已中止。 5
alterTRIGGERTrig_insert1ON卷烟销售表FORINSERTASBEGINTRANSACTIONIFEXISTS(SELECT*FROMINSERTE...
alter TRIGGER Trig_insert1
ON 卷烟销售表
FOR INSERT
AS
BEGIN TRANSACTION
IF EXISTS (SELECT * FROM INSERTED where 卷烟品牌 not in(SELECT 卷烟品牌 FROM 卷烟库存表)
)
BEGIN
print '错误!不能销售'
--回滚事务
ROLLBACK TRANSACTION
RETURN
END
else IF EXISTS (SELECT * FROM INSERTED where 卷烟品牌 in(SELECT 卷烟品牌 FROM 卷烟库存表 where
库存数量<= 0)
)
BEGIN
print('错误!该卷烟库存小于等于0,不能销售。')
ROLLBACK TRANSACTION
RETURN
END
else
begin
DECLARE @pingpai VARCHAR(40)
DECLARE @xiaosl MONEY
SET @pingpai= (SELECT 卷烟品牌 FROM INSERTED)
SET @xiaosl= (SELECT 销售数量 FROM INSERTED)
UPDATE 卷烟库存表 SET 库存数量= 库存数量- @xiaosl,库存金额= (库存数量- @xiaosl)*库存单价
WHERE 卷烟品牌= @pingpai
COMMIT TRANSACTION
end
GO
insert into 卷烟销售表 values('11','ytty',2,20,null) 展开
ON 卷烟销售表
FOR INSERT
AS
BEGIN TRANSACTION
IF EXISTS (SELECT * FROM INSERTED where 卷烟品牌 not in(SELECT 卷烟品牌 FROM 卷烟库存表)
)
BEGIN
print '错误!不能销售'
--回滚事务
ROLLBACK TRANSACTION
RETURN
END
else IF EXISTS (SELECT * FROM INSERTED where 卷烟品牌 in(SELECT 卷烟品牌 FROM 卷烟库存表 where
库存数量<= 0)
)
BEGIN
print('错误!该卷烟库存小于等于0,不能销售。')
ROLLBACK TRANSACTION
RETURN
END
else
begin
DECLARE @pingpai VARCHAR(40)
DECLARE @xiaosl MONEY
SET @pingpai= (SELECT 卷烟品牌 FROM INSERTED)
SET @xiaosl= (SELECT 销售数量 FROM INSERTED)
UPDATE 卷烟库存表 SET 库存数量= 库存数量- @xiaosl,库存金额= (库存数量- @xiaosl)*库存单价
WHERE 卷烟品牌= @pingpai
COMMIT TRANSACTION
end
GO
insert into 卷烟销售表 values('11','ytty',2,20,null) 展开
2个回答
展开全部
请检查卷烟销售表是否不存在该卷烟的品牌
也就是说卷烟库存表中不含有卷烟销售表插入的卷烟品牌
也就是说卷烟库存表中不含有卷烟销售表插入的卷烟品牌
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询