我正在尝试在我们的系统中重复删除用户帐户,我知道有很多关于删除/识别重复项的问题(例如Remove duplicate rows in MySQL),但我还没有看到任何要求保持参考记录。
我有一个users
表和一个subscriptions
表,其外键字段User_ID
与两者共有,并设置为CASCADE
中的subscriptions
。
我想删除users
表中的所有重复项,但这样做会导致User_ID
表中与subscriptions
对应的所有记录都因{ {1}}行为。
是否可以CASCADE
UPDATE
表,将重复记录的users
更改为我想保留的记录,而不会与唯一索引冲突,允许所有参考记录相应更新,最后删除重复的用户记录,而无需级联删除?
添加的复杂功能是,users表中的User_ID
字段显然已使用User_ID
编制索引。
编辑:我应该补充一点,这是一个简化的例子,我们的数据库有100多个表,其中许多表都有基于User_ID的外键。
答案 0 :(得分:0)
所以最后,正如@MarcB帮助我发现上述情况,正确的答案是在开始时更好地计划;)
所以最后,我们将不得不编写一个手动加入帐户的程序化解决方案。我们很幸运能够为每种对象类型设置DAO / DTO,因此处理参考记录不应该太糟糕,它只是一个激烈的操作,所以需要一些好的计划 wink