
SQL Server 数据库事务的一个问题,现在有两个表,商品表和订单表,两表之间通过字段pProductID关联
商品和订单表信息如下现在求写一事务,要求当订单增加一条数据时,在商品表中要减少相应的订单中增加的商品的数量,就是说订单增加中增加两条数据,其中第一条商品ID为0001,数...
商品和订单表信息如下
现在求写一事务,要求当订单增加一条数据时,在商品表中要减少相应的订单中增加的商品的数量,就是说订单增加中增加两条数据,其中第一条商品ID为0001,数量值为10,第二条商品ID为0002,数量为5,则要在商品表中减去商品0001的10库存数量,商品0002的5个库存数量,求大神帮帮忙,现在没分了,过后再加分
怎么加不上图片纳 展开
现在求写一事务,要求当订单增加一条数据时,在商品表中要减少相应的订单中增加的商品的数量,就是说订单增加中增加两条数据,其中第一条商品ID为0001,数量值为10,第二条商品ID为0002,数量为5,则要在商品表中减去商品0001的10库存数量,商品0002的5个库存数量,求大神帮帮忙,现在没分了,过后再加分
怎么加不上图片纳 展开
2个回答
展开全部
CREATE TRIGGER 订单表_I
ON dbo.订单表
FOR insert
AS
update 商品表
set num=num-inserted.odnum
from inserted
where 商品表.pProductID=inserted.pProductID
ON dbo.订单表
FOR insert
AS
update 商品表
set num=num-inserted.odnum
from inserted
where 商品表.pProductID=inserted.pProductID
追问
嗯,终于有人明白我的意思了,但是你又没有想过当商品表的库存不够的时候怎么办?是不是要加事务当不够的时候要回滚一下?能不能补充一下那?
追答
事实上在更改、删除时也都要有触发器来支持。
CREATE TRIGGER 订单表_I
ON dbo.订单表
FOR insert
AS
if EXISTS (select * from inserted,商品表 where 商品表.pProductID=inserted.pProductID
and num<inserted.odnum
)
begin
RAISERROR (' 订单数量太大 !', 16, 10)
ROLLBACK TRANSACTION
goto kkk
end
update 商品表
set num=num-inserted.odnum
from inserted
where 商品表.pProductID=inserted.pProductID
kkk:

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询