这是我previous question的后续内容。基本上我有一个表有2个外键链接到另外两个表。但我认为最好的方法是将一个主键添加到表本身,以便它变为:
id, int, primary
foreign_id_1, int, primary
foreign_id_2, int, primary
问题是表格中已有很多项目。因此,当我运行alembic upgrade head
时,它会添加0
作为所有现有项的值。这显然打破了我的代码。
有没有办法可以追溯性地将id
添加到现有项目中?
答案 0 :(得分:1)
一个表中不应该有多个主键。 See this question. 你想做什么?也许,您的问题可以通过two column index
解决答案 1 :(得分:1)
您想要的不是附加id
列作为主键。您想要的是保留现有的复合主键并添加代理0
列(不主键列),该列自动递增以跟踪插入顺序。但是因为您已经将所有行都插入到表格中,所以您已经丢失了订单,因此恢复"恢复"那个命令。您只需将{{1}}分配给该列即可。