这是我的触发器代码:
DELIMITER $$
USE `smartclass_dbv2`$$
CREATE TRIGGER `delete_attendance_on_holiday`
AFTER INSERT ON `attendance_tbl`
FOR EACH ROW
BEGIN
DELETE FROM `attendance_tbl`
WHERE (date = announcement_tbl.announcement_date && announcement_tbl.announcement_description = 'holiday');
END$$
它没有错误,但它没有删除任何行,我的代码意味着如果它在考勤表上发现任何与公告表中的日期相同的日期并且它是假日,它将删除出勤行表
这是我的出勤表:
这是我的announcement_table:
答案 0 :(得分:0)
INSERT触发器触发时无法更改表。该 INSERT可能会执行某些锁定,这可能会导致死锁。也, 从触发器中删除或更新表将导致该表 在无限递归循环中再次触发的相同触发器。两者的 这些原因是MySQL阻止你这样做的原因。 Documentation
但您可以单独运行此查询。
您的删除查询不正确请查看以下内容
DELETE T1
FROM `attendance_tbl` T1
LEFT JOIN announcement_tbl T2 ON T1.date= T2.announcement_date
WHERE announcement_tbl.announcement_description = 'holiday';
<强> Syntax Delete Using Joins 强>
DELETE T1
FROM T1
LEFT JOIN
T2 ON T1.key = T2.key
WHERE
T2.key IS NULL;