【问题标题】:How to set a Foreign Key to NULL in mysql python如何在mysql python中将外键设置为NULL
【发布时间】:2021-02-25 18:09:54
【问题描述】:

我有两个表:STATE 和 COUNTY,COUNTY 的主键是州和县的组合,它的外键是州。

State 的 COUNTY 表中存在 STATE 表中不存在的条目,因此我想将这些外键设置为 null。我该怎么做?通过设置外键为空,我应该这样做吗?

【问题讨论】:

  • 为什么?您最终会得到一个不低于州的县吗?也许告诉我们您想要实现的目标,然后我们可能会提出更好的方法

标签: python mysql database


【解决方案1】:

在 COUNTY 状态表中有条目不存在于 状态表

如果是这种情况,则表 County 中的列 State不是引用表 State 中的列 State 的外键。
如果要将列定义为外键,则必须这样做:

ALTER TABLE County ADD CONSTRAINT fk_state FOREIGN KEY (State) REFERENCES State(State);

如果存在此外键约束,您将不会有不存在州的县,因为它们将被约束拒绝。

所以,更新表County:

UPDATE County c
LEFT JOIN State s ON s.State = c.State
SET c.State = NULL
WHERE s.State IS NULL  

然后添加外键约束,这样您就不会在表中再次出现不存在的状态。

查看简化的demo。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 2020-12-02
    • 2021-12-03
    相关资源
    最近更新 更多