MySQL: попытка создать триггер, когда обновляется другая таблица - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь создать триггер, при котором вставка в одну таблицу обновляет другую. Это мой SQL-запрос:

CREATE TRIGGER makePayment AFTER INSERT ON Payments FOR EACH ROW

BEGIN
      UPDATE Invoice
        SET InvoiceClientPaid = SUM(InvoiceClientPaid + NEW.PaymentAmt)
        WHERE InvoiceID = NEW.PaymentInvoiceID;

END;

Независимо от того, что я делаю, я получаю следующую ошибку:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6

Я не думаю, что это связано с SUM, потому что попытка basic = 1 в команде SET дает мне точную ошибку. В строке 6 нет '', что очень сбивает с толку?

1 Ответ

0 голосов
/ 16 мая 2018

Если вы вводите этот запрос непосредственно в MySQL, вам необходимо изменить разделитель перед запросом, используя (например) DELIMITER //, в противном случае он считает, что запрос заканчивается на ; в конце вашего UPDATE заявление.Затем MySQL видит END без чего-либо перед ним и жалуется на ничто ('').Так что попробуйте:

DELIMITER //
CREATE TRIGGER makePayment AFTER INSERT ON Payments FOR EACH ROW

BEGIN
      UPDATE Invoice
        SET InvoiceClientPaid = SUM(InvoiceClientPaid + NEW.PaymentAmt)
        WHERE InvoiceID = NEW.PaymentInvoiceID;

END; //
DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...