给数据库中DECIMAL 类型的字段 写入一个0值

BigDecimal bigDecimal=new BigDecimal(“0”);
usedMoney=bigDecimal;

//usedMoney是DECIMAL 类型的值

笔记而已

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是可以实现你的要求的 SQL 代码: 首先,我们需要创建一个触发器,当订单表插入一条新数据时,触发器会自动执行相应的操作: ``` CREATE TRIGGER calc_order_money AFTER INSERT ON order FOR EACH ROW BEGIN -- 计算订单金额 DECLARE amount DECIMAL(10, 2); SELECT sum(o.onum * p.pprice * d.discount) INTO amount FROM order_detail o JOIN product p ON o.opno = p.pno JOIN discount d ON p.plevel = d.level AND o.ocust = d.cust WHERE o.oid = NEW.oid; -- 更新订单金额 UPDATE order SET omoney = amount WHERE oid = NEW.oid; -- 更新库存数量 DECLARE num INT; SELECT sum(onum) INTO num FROM order_detail WHERE oid = NEW.oid; DECLARE cnt INT; SELECT count(*) INTO cnt FROM product WHERE pno IN (SELECT opno FROM order_detail WHERE oid = NEW.oid); IF num > cnt THEN -- 库存不足,撤销操作 DELETE FROM order WHERE oid = NEW.oid; ROLLBACK; ELSE -- 库存充足,更新库存数量 UPDATE product p JOIN order_detail o ON p.pno = o.opno SET p.pnum = p.pnum - o.onum WHERE o.oid = NEW.oid; END IF; END; ``` 该触发器会自动计算订单金额,并将结果写入到订单表的 omoney 字段。同时,它也会根据订单的商品数量更新库存数量。如果库存不足,触发器会撤销之前的操作,将数据库恢复到插入订单前的状态。 需要注意的是,该触发器会根据订单表的 oid 字段来计算订单金额和更新库存数量,因此即使相同顾客购买多个不同商品时,也不会出现计算金额错误的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值