RDBMS 将 table 关系 OneToMany 更改为 ManyToMany。 SQL 脚本
RDBMS change table relation OneToMany to ManyToMany. SQL script
我用postgresql
。在 db
我有重要的元素:
|---------| |------------|
| account | | calendar |
|---------| |------------|
| id |1--*| account_id |
|---------| | id |
|------------|
这部分必须是ManyToMany
关系:
|---------| |------------------| |----------|
| account | | account_calendar | | calendar |
|---------| |------------------| |----------|
| id |1--*| account_id | |-1| id |
|---------| | calendar_id |*-| |----------|
|------------------|
我提供了更新脚本:
CREATE TABLE account_calendar_relation (
account_id BIGINT REFERENCES account_table,
calendar_id BIGINT REFERENCES calendar
);
ALTER TABLE calendar
DROP CONSTRAINT calendar_account_id_fkey,
DROP COLUMN account_id;
此脚本正确更改了 db-schema 结构,但丢失了重要信息(现有数据的日历和帐户之间的映射)。
如何通过保存 calendar
s 和 account
s 之间的现有映射来改进我的迁移脚本?
数据示例
对于输入数据:
account | id
1
2
calendar | id | account_id
1 | 1
2 | 1
预期结果:
account | id
1
2
calendar | id
1
2
account_calendar | account_id | calendar_id
1 | 1
1 | 2
但在实际结果中 account_calendar
table 是空的(因为没有动态填充)。
如何通过保存日历和帐户之间的现有映射来改进您的迁移脚本?
您需要在 table 创建查询之后和更改 table 查询之前插入查询。
在 CREATE TABLE account_calendar_relation
之后和 ALTER TABLE calendar
之前将以下 SQL 插入迁移脚本:
INSERT INTO account_calendar_relation(account_id,calendar_id)
SELECT account_id,id FROM calendar;
我用postgresql
。在 db
我有重要的元素:
|---------| |------------|
| account | | calendar |
|---------| |------------|
| id |1--*| account_id |
|---------| | id |
|------------|
这部分必须是ManyToMany
关系:
|---------| |------------------| |----------|
| account | | account_calendar | | calendar |
|---------| |------------------| |----------|
| id |1--*| account_id | |-1| id |
|---------| | calendar_id |*-| |----------|
|------------------|
我提供了更新脚本:
CREATE TABLE account_calendar_relation (
account_id BIGINT REFERENCES account_table,
calendar_id BIGINT REFERENCES calendar
);
ALTER TABLE calendar
DROP CONSTRAINT calendar_account_id_fkey,
DROP COLUMN account_id;
此脚本正确更改了 db-schema 结构,但丢失了重要信息(现有数据的日历和帐户之间的映射)。
如何通过保存 calendar
s 和 account
s 之间的现有映射来改进我的迁移脚本?
数据示例
对于输入数据:
account | id
1
2
calendar | id | account_id
1 | 1
2 | 1
预期结果:
account | id
1
2
calendar | id
1
2
account_calendar | account_id | calendar_id
1 | 1
1 | 2
但在实际结果中 account_calendar
table 是空的(因为没有动态填充)。
如何通过保存日历和帐户之间的现有映射来改进您的迁移脚本?
您需要在 table 创建查询之后和更改 table 查询之前插入查询。
在 CREATE TABLE account_calendar_relation
之后和 ALTER TABLE calendar
之前将以下 SQL 插入迁移脚本:
INSERT INTO account_calendar_relation(account_id,calendar_id)
SELECT account_id,id FROM calendar;