客户(cid、cname、caddress、ccity、cstate、czip、ccardnum) 产品(pid、pname、pbrand、pprice) ShoppingCart(cartid, cid, active, totalprice) ShoppingCart.cid 对 Customer.cid 的引用 CartItem(cartid, pid, iprice, iquantity) CartItem.cartid 引用 ShoppingCart.cartid, CartId.pid 引用 Product.pid Order(oid, cartid, time, payprice) Order.cartid 对 ShoppingCart.cartid 的引用
创建触发器,当某个产品的价格发生变化时,更新包含该项目的任何活动购物车中该项目的价格,并更新这些购物车的总价格?
CREATE TRIGGER priceupdate AFTER UPDATE ON product
FOR EACH ROW
BEGIN
UPDATE cartitem
SET iprice=new.pprice
WHERE pid=new.pid
and cartid in
(select cartid
from shoppingcart WHERE active='1');
UPDATE shoppingcart
SET totalprice =
(select sum(iprice*iquantity)
from cartitem WHERE cartid=new.cartid;
END;
上面的代码给了我错误,因为我正在更新用于更新购物车的购物车
当我尝试下面给出的代码工作正常但我无法更新购物车中的总价。有人可以帮我更新购物车 totalprice
CREATE TRIGGER priceupdate AFTER UPDATE ON product
FOR EACH ROW
BEGIN
UPDATE cartitem
SET iprice=new.pprice
WHERE pid=new.pid and cartid in
(select cartid
from shoppingcart WHERE active='1');
END;
注意:我正在使用 MYSQL