Можете ли вы использовать ограничения внешнего ключа для пустых столбцов в одной и той же таблице для принудительного применения допустимых ссылок, отличных от себя? - PullRequest
0 голосов
/ 29 января 2020

У меня есть таблица SQL, в которой хранятся задачи. Я хотел бы добавить обнуляемый столбец с именем «parent_id», который может содержать идентификатор другой задачи. Например, задача под названием «Go to Grocery store» может быть родительской для задачи под названием «Купить молоко». Я хочу применить следующие ограничения:

  • parent_id МОЖЕТ быть пустым
  • Если не пусто, parent_id ДОЛЖЕН ссылаться на идентификатор другой задачи (в списке
  • parent_id НЕ МОЖЕТ ссылаться на себя
  • вы удаляете задачу из таблицы, если ее идентификатор указан в столбце parent_id

Являются ли ограничения внешнего ключа лучшим способом сделать это в схеме? Если так, Как я могу изменить мой код ниже, чтобы выполнить sh это?

class Task(db.Model):
    __tablename__ = 'tasks'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(255), nullable=False)
    description = db.Column(db.String(255), nullable=True)
    parent_id = db.Column(db.Integer, db.ForeignKey('tasks.id'), nullable=True)
    db.ForeignKeyConstraint(['id'], ['parent_id'])


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