【问题标题】:How to replace all Foreign Keys?如何替换所有外键?
【发布时间】:2016-11-09 23:04:03
【问题描述】:

现在我有以下表结构:

USER
    ID BIGINT NOT NULL
    USER_DATA_ID BIGINT NOT NULL REFERENCES USER_DATA(ID)

USER_DATA
    ID BIGINT NOT NULL
    PERSON_DATA_ID BIGINT NOT NULL REFERENCES PERSON_DATA(ID)

PERSON_DATA
    ID BIGINT NOT NULL

如您所见,所有人员数据 ID 都在 USER_DATA 表中。我现在必须做出巨大的改变。现在应该在 USER 表中引用人员数据 ID,而不会丢失数据。所以新的架构必须是:

USER
    ID BIGINT NOT NULL
    USER_DATA_ID BIGINT NOT NULL REFERENCES USER_DATA(ID)
    PERSON_DATA_ID BIGINT NOT NULL REFERENCES PERSON_DATA(ID)

我可以用简单的 SQL 语句来做吗?我正在使用 H2 数据库。

【问题讨论】:

    标签: sql database foreign-keys h2


    【解决方案1】:
    1. 先删除引用USER_DATA(PERSON_DATA_ID)foreign keyPERSON_DATA(ID)
    2. USERPERSON_DATA_ID 上添加一个新列。
    3. PERSON_DATA_ID 列复制到USERINSERT INTO USER(PERSON_DATA_ID) SELECT ud.PERSON_DATA_ID FROM USER_DATA AS ud INNER JOIN USER AS u ON ud.ID = u.USER_DATA_ID
    4. 删除USER_DATA(PERSON_DATA_ID) 列。
    5. USERPERSON_DATA之间建立一个新的foreign key关系

    【讨论】:

      猜你喜欢
      • 2013-12-13
      • 2016-11-04
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      • 2019-07-30
      • 2011-02-06
      • 2015-12-02
      相关资源
      最近更新 更多