Это мой первый раз, когда я запускаю триггер, и у меня проблемы. Я создаю систему уведомлений о том, что при создании нового уведомления она добавит строку в таблицу notify
. То, что добавлено, зависит от типа уведомления.Resultset from trigger MySQL
До сих пор я пытался:
DELIMITER $$
DROP TRIGGER IF EXISTS generate_notify $$
CREATE TRIGGER generate_notify
AFTER INSERT
ON notifications
FOR EACH ROW
BEGIN
SELECT @group := notify_group FROM notification_types WHERE type=NEW.type;
IF (@group <> 1) THEN
INSERT INTO notify (user_id, notification_id) VALUES (NEW.user_reference, NEW.id);
ELSE
INSERT INTO notify (user_id, notification_id) VALUES(
SELECT ID, NEW.id FROM user_customer WHERE clientID=NEW.user_reference
);
END IF;
END; $$
DELIMITER ;
Я искал вокруг, а затем изменил его:
DELIMITER $$
DROP TRIGGER IF EXISTS generate_notify $$
CREATE TRIGGER generate_notify
AFTER INSERT
ON notifications
FOR EACH ROW
BEGIN
DECLARE insert_user_id INT(11);
SELECT @group := notify_group FROM notification_types WHERE type=NEW.type;
IF (@group <> 1) THEN
INSERT INTO notify (user_id, notification_id) VALUES (NEW.user_reference, NEW.id);
ELSE
SELECT ID INTO insert_user_id FROM user_customer WHERE clientID=NEW.user_reference;
INSERT INTO notify (user_id, notification_id) VALUES(insert_user_id, NEW.id);
END IF;
END; $$
DELIMITER ;
Я также попытался смешивания выше 2 и все, что я получаю либо не может вернуть набор результатов, либо есть синтаксическая ошибка с моим запросом выбора.
(Кроме того, я предполагаю, что NEW
ключевого слова предопределено для триггеров?)
Благодарим за помощь, @fancyPants, это сработало как шарм! :) –