【发布时间】:2021-02-20 15:23:39
【问题描述】:
删除记录时出现错误。触发器的问题在哪里。
Mysql代码-
MariaDB [practice2]> delimiter $$
MariaDB [practice2]> create trigger BeforeLibraryDelete1
-> BEFORE DELETE
-> ON library_audit2 FOR EACH ROW
-> BEGIN
-> declare id1 int;
-> select library_id into id1 from library_audit2 where change_date=OLD.change_date;
-> delete from library_2 where library_2.id=id1;
-> END $$
Query OK, 0 rows affected (0.128 sec)
MariaDB [practice2]> delimiter ;
MariaDB [practice2]> Delete from library_audit2 where change_date='2017-04-07';
在触发删除查询时,它给出了错误 -
ERROR 1442 (HY000): Can't update table 'library_audit2' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
【问题讨论】:
-
好吧,你不能从触发器修改触发器定义的表。但是,我不明白触发器应该做什么,因此无法提出解决方案。
-
我正在从包含外键的表中删除一条记录。为了避免外键错误,我定义了一个 BEFORE DELETE 触发器,它将从另一个包含主键的表中删除相同的记录。 @影子
-
这看起来不合逻辑。为您的表显示完整的 CREATE TABLE、一些数据示例和删除过程 - 删除了哪些行、所需的最终状态以及原因。
标签: mysql sql triggers sql-delete