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 根据错误提示从您的触发器中获取结果集。
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 根据错误提示从您的触发器中获取结果集。