Mysql Trigger Prolem - PullRequest
       46

Mysql Trigger Prolem

0 голосов
/ 19 октября 2019

Я получил 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 ;

Но она показывает ошибку непредвиденияколичество и цена продукта, где цена продукта берется из другой таблицы, которая является таблицей продуктов, и моя проблема в том, что я не знаю правильный синтаксис для этого: (

Вот моя транзакция

Вот мой продукт

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Предполагая, что вы выполняете это в клиенте командной строки (так что команда DELIMITER действительна), вы просто забыли прекратить оператор UPDATE:

UPDATE transaction
   SET transaction.TotalPrice = product.ProductPrice * Transaction.OrderedQty;

Обратите внимание на ; в конце.

Также вы написали ; вместо $$ в конце текста триггера, несмотря на то, что только что изменили разделитель на $$.

0 голосов
/ 19 октября 2019

Я думаю, что вы хотите сделать это и обновить с помощью новой цены продукта.

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 равен

...