Ошибка триггера MySQL при попытке создать end_date из start_date + duration - PullRequest
0 голосов
/ 07 марта 2019

Сообщение об ошибке

таблица

Привет

Я получаю это сообщение, когда пытаюсь использовать этот триггер длярассчитать дату окончанияДлительность Integer из другой таблицы.Это делается в MySQL на Mamp Enviorment

Любая помощь приветствуется

используемый код DELIMITER //

CREATE TRIGGER m_duration_ins_tr1

BEFORE INSERT ON memberships FOR EACH ROW
BEGIN DECLARE duration INTEGER; SELECT duration FROM membership_type WHERE
membership_type_id = NEW.member_type; SET NEW.end_date := DATE_ADD(NEW.start_date, INTERVAL duration MONTH); END // DELIMITER ;

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Я думаю, вам просто нужно заменить

SELECT duration FROM membership_type WHERE membership_type_id = NEW.member_type;

с

SET duration = SELECT duration FROM membership_type WHERE membership_type_id = NEW.member_type LIMIT 1;

Простой SELECT не делал ничего, чтобы назначить вашу локальную переменную, но действительно был в основном попыткой вернуть набор результатов из вашего триггера, как и предполагалось в ошибке.

0 голосов
/ 07 марта 2019
Триггерное событие

может быть INSERT, UPDATE или DELETE. Я не думаю, что вы можете выбрать. Попробуйте инструмент MySQL для создания триггера

...