我有两个MySQL表A
和B
。表A
的成员ref
是对B.id
的ForeignKey引用。这使得B
和A
之间存在1:多的关联。
这已经生产了几个星期,但我现在正在为我的代码添加更多功能,并意识到我的原始映射错误。我需要B
和A
之间的多个:1关系。也就是说,B.ref
应指向A.id
,而不是相反。直到现在它才成为问题,因为到目前为止它都是1:1的映射。如何将数据迁移到新架构?
我猜:
ALTER TABLE B ADD COLUMN ref INTEGER CONSTRAINT FOREIGN KEY (A.id)
- 首先添加列for row in A: row.ref.ref = row
”ALTER TABLE A DROP COLUMN ref
尝试在SQLAlchemy中执行此操作失败,并出现循环引用错误。我需要在SQL中执行此操作,但不熟悉必要的SELECT + UPDATE语法。帮助
答案 0 :(得分:2)
对于第2步:
update b, a
set b.ref = a.id
where a.ref = b.id
答案 1 :(得分:0)
只需添加外键约束作为第四步,创建列时就不需要它了。