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

Iga*_*lSt 2 mysql sql triggers database-design mysql-error-1442

我有一个表存储父和子记录.

我试图创建一个触发器,删除父项时删除所有子记录:

Delete From tbl Where ParentId = OLD.Id
Run Code Online (Sandbox Code Playgroud)

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

错误1442:无法更新存储的函数/触发器中的表'tbl',因为它已被调用此语句的语句使用

我究竟做错了什么?

mel*_*okb 6

看来这是不可能的:

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

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

  1. 编写删除父行和子行的应用程序逻辑,并在每次要删除父记录时调用此应用程序逻辑,而不是直接删除它.
  2. 级联删除关系在同一个表上,这似乎是可能的.
  3. 清理过程,通常清除孤立的子记录.
  4. (由@Chris建议)通过添加另一个表从父记录中分离出子记录.