如果您正在合并表X中的两个或多个数据库记录,这些记录与表Y有多到多的关系,那么您应该如何解决中间表Z中的记录由于合并而违反一个或多个约束的问题?您是简单地丢弃它们还是中断事务处理?
发布于 2012-10-30 10:37:43
这取决于你期待的结果。通常,您还必须合并表Z以保持数据完整性。
不应丢弃违反约束的记录。如果那些丢失的记录是你的月薪建议,那就太烦人了。
发布于 2012-10-30 11:13:51
个人而言,我会删除表Z中的关系,然后从X中删除相关记录,合并记录,然后将新记录重写到数据库中。这意味着您不需要破坏任何约束,也不需要禁用约束,也不太可能通过丢弃旧数据来合并错误。
发布于 2012-10-30 12:04:37
这个问题有几种不同的发生方式:
表Z有糟糕的数据(不确定它最初是为什么或者是怎么进来的)。然后,随着如何处理坏数据,它就变成了一个商业决策。您通常需要向业务报告这些(坏的)数据,并让他们做出决定。然后选择适当的方法来解决这个问题。
2-如果表X或表Y使用自动生成的in,而表Z数据引用这些in,则在尝试加载表Z时可能会遇到此问题(假设您已经成功地加载了X和Y中的所有行)。在这种情况下,加载表Z而不强制FK约束(加载Z之前放松约束),加载Z,然后在单独的步骤上重新构建约束。
作为开发人员或DBA,在没有明确的用户协议的情况下,您不会丢弃生产数据。此外,允许保持备份。
https://softwareengineering.stackexchange.com/questions/171836
复制相似问题