1
這是我第一次使用觸發器,我遇到了一些麻煩。 我正在創建一個通知系統,當新通知被創建時,它將向notify
表添加一行。添加的內容取決於它的通知類型。來自觸發器的結果集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和所有我得到要麼不能返回結果集,要麼我的select查詢出現語法錯誤。
(另外,我假設NEW
關鍵字已經預先設定的觸發?)
感謝您的幫助,@fancyPants,它的工作就像一個魅力! :) – 2014-09-02 10:36:48