小编典典

MySql触发器删除同一表中的子记录

sql

我有一个在其中存储父级和子级记录的表。

我正在尝试创建一个触发器,该触发器将在删除父级时删除所有子级记录:

Delete From tbl Where ParentId = OLD.Id

虽然我可以成功保存触发器,但是在删除时出现此错误:

错误1442:可以在存储的函数/触发器中更新表``bl’‘,因为调用该语句的语句已经使用了该表

我究竟做错了什么?


阅读 204

收藏
2021-04-14

共1个答案

小编典典

看来这是不可能的

您无法删除已激活触发器的表中的行。

您可能会考虑的其他一些选择:

  1. 编写删除父行和子行的应用程序逻辑,并在每次要删除父记录而不是直接删除父记录时调用此应用程序逻辑。
  2. 级联删除关系在同一张表上,这似乎是可能的
  3. 定期清除孤立子记录的清理过程。
  4. (由@Chris建议)通过添加另一个表将子记录与父记录分开。
2021-04-14