无法更新存储函数/触发器错误中的表'attendance_tbl'以进行触发器删除

时间:2018-04-07 15:00:22

标签: mysql triggers

触发:

1
  

该场景是假日将被删除的那一天的任何出席。在announcement_tbl中,它包含announcement_date,announcement_description,announcement_date。如果公告日期与出勤表上的日期相同,前提是该说明是假日,则将取消/删除出勤表上的出勤行。但是,当我在ATTENDANCE_tbl上插入数据时,会发生错误。   你可以帮我解决问题吗?

这是错误:

“无法在存储的函数/触发器中更新表'attendance_tbl',因为它已被调用此存储函数/触发器的语句使用。”“

1 个答案:

答案 0 :(得分:0)

您无需删除所有出席的行,只需要插入的行。为此,您在插入时出错:

DELIMITER $$

USE `smartclass_dbv2`$$

CREATE TRIGGER `delete_attendance_on_holiday` BEFORE INSERT ON `attendance_tbl`
FOR EACH ROW 
BEGIN
    IF EXISTS (SELECT 1
               FROM announcement_tbl a
               WHERE a.announcement_description = 'holiday' AND
                     a.announcement_date = new.date
              ) THEN
        SIGNAL SQLSTATE '45000', message_text = 'Insert failed; date on holiday';
    END IF;
END$$

您可能需要update的类似触发器。