如何在sqlalchemy中创建外键?
我在一个叫做Strings的表里有一个复合主键,包含一个整数类型的id和一个长度为2的字符串类型的lang。
我想从其他表中创建一个外键,只指向这个主键中的id部分。这意味着在Strings表中可能会有很多行(翻译)与这个外键匹配。我只需要存储这个id,并且希望数据库能够保持数据的一致性。
这样做可以吗?如果可以的话,怎么做呢?
1 个回答
3
这段内容来自于维基百科
在引用表中的列,必须是被引用表中的主键或者其他候选键。引用列中的一行值,必须在被引用表中的某一行中出现。
假设你有这样的情况:
id | var
1 | 10
1 | 11
2 | 10
外键必须引用被引用表中的确切一行。这就是为什么它通常引用主键的原因。
在你的情况下,你需要创建另一个表Table1(id),在这里存储这些id,并且要把这个列设置为唯一或主键。你当前表中的id列并不是唯一的——在这种情况下你不能使用它……所以你需要创建一个Table1(id - 主键),并将你当前表中的id设置为指向Table1的外键。现在你可以在Table1的id上创建外键,而你当前表的主键也没问题。