У меня есть таблица 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'])