2

MySQL トリガーに問題があります。CustomersProductsSalesの3 つのテーブルがあります。Salesでは、顧客製品を参照しています。新しい販売が挿入された後、ProductsCustomersのいくつかのカウントを更新したいと考えています。次のトリガーは両方のテーブルの更新に失敗します...何が間違っているのかわかりません。

DELIMITER $
CREATE TRIGGER OnSalesInsert AFTER INSERT ON Sales
FOR EACH ROW BEGIN
 UPDATE Products SET Products.sold=Products.sold+NEW.amount WHERE Products.id=NEW.product_id;
 UPDATE Customers SET Customers.amount=Customers.amount+NEW.amount WHERE Customers.id=NEW.customer_id;
END $
DELIMITER ;
4

2 に答える 2

1

これを試して:

DELIMITER $$

CREATE
    /*!50017 DEFINER = 'root'@'%' */
    TRIGGER `OnSalesInsert` BEFORE INSERT ON `Sales` 
    FOR EACH ROW BEGIN

       UPDATE Products 
       SET sold = sold + new.amount 
       WHERE id = new.product_id; 

       UPDATE Customers 
       SET amount = amount + new.amount 
       WHERE id = new.customer_id;
    END;
$$

DELIMITER ;
于 2012-12-25T14:59:34.267 に答える
0
DELIMITER $$
create trigger UpdateAvail after insert on product_details
for each row
Begin
 Declare a1 INT;
Declare d1 VARCHAR(1);
Declare d2 VARCHAR(100);
Select count(0) INTO a1 from prod_available where P_Id=new.P_Id;
Select P_Name,P_Brand INTO d1,d2 from product where P_Id=new.P_Id;
IF a1>0 THEN
Update prod_available set P_quantity=P_quantity+new.quantity where P_Id=new.P_Id;
ELSE
insert into prod_available (P_Id,P_Name,P_Brand,P_quantity)   values                     (new.P_Id,d1,d2,new.quantity);
  END IF;
  END;
  $$
DELIMITER ;
于 2014-11-26T13:31:52.140 に答える