как исправить ошибку в коде MySQL при выполнении триггера счетчика после вставки - PullRequest
0 голосов
/ 12 февраля 2019

Я устанавливаю triggerafter_inser, и я не знаю, как ее решить

DELIMITER $$
USE `solocloud_dev_2`$$

DROP TRIGGER IF EXISTS table_10_summary_after_insert $$

CREATE TRIGGER table_10_summary_after_insert AFTER INSERT ON table_10
   FOR EACH ROW BEGIN
   DECLARE var INT;
   SET var=0;

   SELECT COUNT(*) FROM table_10_summary WHERE client_id = new.client_id;

   IF var > 0
   THEN 
       UPDATE table_10_summary SET records = records+1 WHERE client_id = new.client_id;

    ELSE
        INSERT INTO table_10_summary (new.client_id,1);
END$$

DELIMITER$$

1 Ответ

0 голосов
/ 12 февраля 2019

Есть несколько проблем с вашим триггером:

  • вам нужно SET var из результатов запроса;как сейчас, вы не устанавливаете это значение

  • блок IF должен заканчиваться на END IF

Следующие кодыуспешно компилируется в этой скрипте БД :

DELIMITER $$

DROP TRIGGER IF EXISTS table_10_summary_after_insert $$

CREATE TRIGGER table_10_summary_after_insert AFTER INSERT ON table_10
FOR EACH ROW 
BEGIN
    DECLARE var INT;

    SET var = (SELECT COUNT(*) FROM table_10_summary WHERE client_id = new.client_id);
    IF (var > 0) THEN 
        UPDATE table_10_summary SET records = records + 1 WHERE client_id = new.client_id;
    ELSE
        INSERT INTO table_10_summary VALUES(new.client_id,1);
    END IF;

END$$

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