我正在努力编写从一个表到另一个表的迁移。我有一张桌子vault
。现在,我创建了一个新表company
。 vault
表包含一些有关“公司”的数据,我现在要“移动”到特定的company
表中。
- 每个
Company
可以有多个Vault
,并且始终至少有一个Vault
。 - 每个
Vault
都恰好引用了一家公司。 -
company
引用了master_vault
,名称为“ {Master}。Vault
。
所以我想编写一个迁移,该迁移将用company
中的数据填充新的Vault
表,并将公司的master_vault
设置为名称为“大师”。
我尝试过类似的事情。
CREATE TABLE company (
id VARCHAR NOT NULL,created_at TIMESTAMP NOT NULL,updated_at TIMESTAMP NOT NULL,master_vault_id VARCHAR NOT NULL,company_name VARCHAR NULL,country VARCHAR(2) NOT NULL,PRIMARY KEY (id),FOREIGN KEY (master_vault_id) REFERENCES vault (id)
);
INSERT INTO company (id,created_at,updated_at,master_vault_id,company_name,country)
SELECT company_id,NOW(),id,country
FROM vault
WHERE vault.name = 'Master';
但是,此迁移失败:
ERROR: duplicate key value violates unique constraint \"company_pkey\"\n Detail: Key (id)=(123456) already exists
我做错了什么?有人请帮助我使用此SQL。