【问题标题】:Replacing foreign key values (unique) in two records替换两条记录中的外键值(唯一)
【发布时间】:2009-04-21 11:16:49
【问题描述】:

MySQL 似乎没有延迟约束,直到实现的事务结束。如果是这样,在两个孩子记录中切换父母的最佳方法是什么?

例如,如果我们有一些 UI 插槽,每个用户都可以在其中放置物品。如果在 item 表中 slotid 是 FK 并且在 Items 表中的 itemId 和 slotId 列上存在唯一索引,那么应该如何在用户的插槽中切换项目?

有没有比在事务中使用 SET FOREIGN_KEY_CHECKS=0 和三个更新更好的方法呢?

[EDIT] SlotId 不可为空,也不应赋予项目始终必须位于某个插槽中 - 因此将其设置为可空意味着放弃语义正确性和重要的安全检查,只是为了使一些实现细节更容易。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    将它们清空,如果要更新的列可以为空,然后更新,或者删除并插入。

    【讨论】:

      【解决方案2】:

      我描述了类似的问题in this post

      似乎使列NULL'able 的危害较小,因为在这种情况下您不必禁用外键约束。

      【讨论】:

        猜你喜欢
        • 2014-03-20
        • 2012-03-26
        • 1970-01-01
        • 1970-01-01
        • 2014-03-21
        • 2014-04-19
        • 2021-12-26
        • 2014-06-01
        • 1970-01-01
        相关资源
        最近更新 更多