sqlalchemy создать внешний ключ? - PullRequest
1 голос
/ 29 августа 2009

У меня есть составной PK в таблице Strings (целочисленный идентификатор, varchar (2) lang)

Я хочу создать FK ТОЛЬКО для идентификатора половины PK из других таблиц. Это означает, что в таблице Strings потенциально может быть много строк, соответствующих FK. Мне просто нужно сохранить идентификатор и сохранить целостность ссылок в БД.

Возможно ли это? Если да, то как?

1 Ответ

3 голосов
/ 29 августа 2009

Это из вики

Столбцы в справочной таблице должен быть первичным ключом или другим ключ-кандидат в ссылочной таблице. Значения в одной строке ссылочных столбцов должны находиться в одной строке в ссылочной таблице.

Допустим, у вас есть это:

id | var            
1  |  10            
1  |  11          
2  |  10

Внешний ключ должен ссылаться на ровно одну строку из ссылочной таблицы. Вот почему обычно он ссылается на первичный ключ.

В вашем случае вам нужно создать еще один Table1 (id), в котором вы сохранили идентификаторы, и сделать столбец уникальным / первичным ключом. Столбец id в вашей текущей таблице не уникален - вы не можете использовать его в вашей ситуации ... поэтому вы делаете Table1 (id - первичный ключ) и делаете id в вашей текущей таблице внешним ключом для Table1 . Теперь вы можете создать внешние ключи для идентификатора в таблице 1, и первичный ключ в вашей текущей таблице в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...