现在我有以下表结构:
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数据库。
答案 0 :(得分:1)
foreign key
的{{1}}
到USER_DATA(PERSON_DATA_ID)
。 PERSON_DATA(ID)
表USER
上添加新列。PERSON_DATA_ID
复制到PERSON_DATA_ID
:
USER
INSERT 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
列。USER_DATA(PERSON_DATA_ID)
和foreign key
USER
关系
醇>