MySQL外键,trip" Cascade Delete"没有删除原始记录

时间:2012-09-26 19:39:30

标签: asp.net mysql foreign-keys relational-database cascade

我目前正在使用MySQL存储所有关系数据的系统,但我们的审计日志保存在MongoDB文档数据库中以进行长期存档。在'projects'(系统中最大的父实体)的情况下,我想允许用户删除项目并强制级联删除以有效地清除我的所有相关数据的数据库。 (这是它变得棘手的地方)

理想情况下,一旦删除,我的“项目”表中的单个记录将通过删除持续存在,被标记为“已归档”项目,然后我的代码将知道如果用户尝试访问已归档项目,我们将加载单个页面,显示在删除之前在项目生命周期内收集的所有MongoDB审核日志。

我想我可以通过选择项目记录,运行删除,重新插入数据以及重新使用分配给项目的原始AutoInc ID来使事务在事务中完成。关于这个FEELS的东西很脏,所以我想知道是否有人看到了更好的方法。

理想情况下,如果有一种方法可以触发表的外键上的级联事件而不实际删除原始记录,我会得到我需要的东西,但我没有看到任何这样的野兽。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我过去使用的只是添加一个存档列并使其成为布尔值。因此,当用户删除'什么,它只会切换旗帜。显然,只有当您使用像php这样的东西来处理请求而不允许用户直接修改数据库时,才能这样做。需要更多关于你如何计划这样做的信息。

我会在评论中加以说明,但我认为我没有足够的评价来评论其他问题。