MySQL触发器问题

时间:2019-10-19 00:15:56

标签: mysql mysql-error-1064

我有2个表,即交易和产品

DELIMITER $$

CREATE TRIGGER total_value
  AFTER UPDATE ON product
  FOR EACH ROW
BEGIN
    UPDATE transaction
       SET transaction.TotalPrice = product.ProductPrice * Transaction.OrderedQty   
END;

DELIMITER ;

但显示出意外错误

我很抱歉,我的问题是我想在交易中插入一个总值来计算数量和产品价格,其中产品价格来自另一个表(产品表),而我的问题是我不知道正确的语法那:(

Here is my Transaction

Here is My Product

2 个答案:

答案 0 :(得分:1)

假设您正在命令行客户端中执行此操作(因此main()命令有效),您只是忘了终止main_menu()语句:

    int menu_option = main_menu();
    if (menu_option == 5) {

请注意最后的DELIMITER

尽管您刚刚将分隔符更改为UPDATE,但您还是在触发文本的末尾写了UPDATE transaction SET transaction.TotalPrice = product.ProductPrice * Transaction.OrderedQty; 而不是;

答案 1 :(得分:0)

我认为您想这样做并使用新的Productprice更新。

DELIMITER $$

CREATE TRIGGER total_value
  AFTER UPDATE ON product
  FOR EACH ROW
BEGIN
    UPDATE transaction tr
       SET tr.TotalPrice = NEW.ProductPrice * tr.OrderedQty
          Where tr.ProductID = NEW.PRoduktID;  
END;

DELIMITER ;

因此,仅当productID si相等时才更新列和总价格