MySQL 尝试从 start_date + 持续时间生成 end_date 时触发错误

MySQL Trigger Error when trying to generate end_date from start_date + duration

Error Message

table

我在尝试使用此触发器计算 end_date 时收到此消息。持续时间整数来自另一个table。这是在 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 ;

触发事件可以是 INSERT 、 UPDATE 或 DELETE 。 我不认为你可以 select 。 尝试 mysql workbench 创建触发器

我想你只需要更换

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 没有做任何事情来分配给您的局部变量,但实际上基本上是尝试 return 根据错误提示从您的触发器中获取结果集。