MySQL: попытка создать триггер, когда обновляется другая таблица

0

Я пытаюсь создать триггер, при котором вставка на одну таблицу обновляет другую. Это мой 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 нет строки, которая очень запутанна?

Теги:
triggers

1 ответ

0
Лучший ответ

Если вы вводите этот запрос непосредственно в 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 ;
  • 0
    Спасибо за это. Если я пытаюсь использовать разделитель, я получаю следующую ошибку. Error Code: 1419. You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) Я использую Google Cloud SQL и поэтому, по-видимому, Супер привилегия не существует.
  • 0
    Эта статья объясняет, как решить эту проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню