你好
当我尝试使用此触发器计算end_date时,我收到此消息。持续时间Integer来自另一个表。这是在Mamp环境中的MySQL中完成的
任何帮助赞赏
代码使用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 ;
我想你只需要更换
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没有做任何事情来分配给你的局部变量,但实际上基本上是一个尝试从错误建议的触发器返回结果集。
触发事件可以是INSERT,UPDATE或DELETE。我不认为你可以选择。尝试使用mysql workbench来创建触发器