PHP,删除无限类别表中的类别

时间:2011-04-18 17:31:57

标签: php mysql

我想知道从无限类别表中删除类别(包含所有子类别)的最佳方法是什么。

我打算一起去;

  • 删除类别和子类别。
  • 由于它是无限制的类别系统,最后运行另一个函数来清除表中没有parent_id记录的类别。

    还有其他方法,最好是更优雅的方式来实现这个目标吗?

修改 我的类别表的结构

array(8) {
  ["id"]=>
  NULL
  ["parent_id"]=>
  NULL
  ["siteID"]=>
  NULL
  ["memberGroups"]=>
  NULL
  ["name"]=>
  NULL
  ["language"]=>
  NULL
  ["protectDelete"]=>
  NULL
  ["typeID"]=>
  NULL
}

感谢您的时间和关注。

1 个答案:

答案 0 :(得分:2)

如果关注的是删除许多其他记录具有引用约束的记录,则严格删除可能不是正确的方法。

相反,也许尝试“软删除”,而不是删除记录,而是在记录上设置一些标志(例如IsActive位/ tinyint字段设置为false0 )。然后,围绕数据库的逻辑需要知道对该字段进行过滤。如果所有数据访问都是通过存储过程或通过代码中的中央数据访问层完成的,则过滤特别容易,因为过滤器可以对应用程序的其余部分透明。

这有点逻辑/工作,但请注意这里的额外好处:

  • 无论子记录的参考限制如何,删除都非常快
  • 删除不是永久性的,非常容易恢复
  • 删除不一定必须级联(子记录仍然可以是活动的和孤立的,具体取决于这些特定实体的逻辑)