来自触发器MySQL的结果集
这是我第一次使用触发器,我有点麻烦。 我正在创建一个通知系统,当创建一个新通知时,它将向notify表中添加一行。添加的内容取决于通知类型 到目前为止,我已经尝试:来自触发器MySQL的结果集,mysql,sql,Mysql,Sql,这是我第一次使用触发器,我有点麻烦。 我正在创建一个通知系统,当创建一个新通知时,它将向notify表中添加一行。添加的内容取决于通知类型 到目前为止,我已经尝试: DELIMITER $$ DROP TRIGGER IF EXISTS generate_notify $$ CREATE TRIGGER generate_notify AFTER INSERT ON notifications FOR EACH ROW BEGIN SELECT @group := notify_group
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 ;
我还尝试将上述两种方法混合在一起,得到的结果要么是无法返回结果集,要么是select查询出现语法错误
另外,我假设NEW关键字是为触发器预定义的?您的第一次尝试实际上是正确的,但是您没有将SELECT的结果写入变量。无法从触发器返回结果集
DELIMITER $$
DROP TRIGGER IF EXISTS generate_notify $$
CREATE TRIGGER generate_notify
AFTER INSERT
ON notifications
FOR EACH ROW
BEGIN
DECLARE v_group INT;
SELECT notify_group INTO v_group FROM notification_types WHERE type=NEW.type;
IF (v_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 ;
谢谢你的帮助,@fancyPants,它起了很大的作用!: