gpt4 book ai didi

mysql - 来自触发器 MySQL 的结果集

转载 作者:行者123 更新时间:2023-11-29 00:10:02 25 4
gpt4 key购买 nike

这是我第一次使用触发器,遇到了一些麻烦。我正在创建一个通知系统,当创建一个新通知时,它会在 notify 表中添加一行。添加的内容取决于它是什么通知类型。

到目前为止我已经尝试过:

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 ;

我也尝试过混合使用上述两种方法,但我得到的结果要么无法返回结果集,要么我的选择查询存在语法错误。

(此外,我假设 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 ;

关于mysql - 来自触发器 MySQL 的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25620718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com