Уникальное ограничение использования данных в нескольких таблицах (SQL / SQLAlchemy) - PullRequest
8 голосов
/ 21 августа 2010

Верхний класс с именем Parametric используется для создания объектов, с которыми могут быть связаны параметры:

class Parametric(object):
 def __init__(self, name):
  self.name = name
  self.pars = []

class Foo(Parametric):
 def __init__(self, name, prop):
  self.prop = prop
  Parametric.__init__(self, name)

class Bar(Parametric):
 def __init__(self, name, prop):
  self.prop = prop
  Parametric.__init__(self, name)

Я использую SQLAlchemy для своего механизма ORM.

Я хочу наложить ограничение UNIQUE, которое гарантирует, что комбинация (name, prop) уникальна для данного класса (например, только один экземпляр Foo можно назвать "my_foo" и иметь prop значение, скажем, "my_prop"), но я не вижу, как ссылаться на столбец name из Parametric в разделе Foo таблица UNIQUECONSTRAINT.

Эта уникальность может быть навязана директивами FOREIGN KEY?

1 Ответ

2 голосов
/ 19 сентября 2011

Вы можете сделать это, используя наследование одной таблицы .Однако, если ваши два столбца находятся в разных таблицах, вы не можете точно делать то, что вы пытаетесь сделать (невозможно создать уникальное ограничение для таблиц).

Еслинаследование отдельных таблиц не вариант, вы, вероятно, захотите либо (1) обеспечить уникальность в python, либо (2) отказаться от наследования sqlalchemy, а просто использовать внешний ключ, чтобы связать Foo и Bar с Parametric.Вы можете использовать внешний ключ для name, а затем сделать уникальное ограничение для name и prop.

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