У меня есть две таблицы, связанные через внешний ключ, здесь они используют декларативное сопоставление
class Task(DeclarativeBase):
__tablename__ = 'task'
id = Column(Integer, primary_key=True)
state = Column(Integer, default=0)
obs_id = Column(Integer, ForeignKey('obs.id'), nullable=False)
class Obs(DeclarativeBase):
__tablename__ = 'obs'
id = Column(Integer, primary_key=True)
state = Column(Integer, default=0)
Итак, я хотел бы обновить связанный файл task.state, когда obs.state изменяется на значение 2.В настоящее время я делаю это вручную (используя отношение, называемое задачей)
obs.state = 2
obs.task.state = 2
Но я бы предпочел сделать это с помощью триггера.Я проверил, что это работает в sqlite
CREATE TRIGGER update_task_state UPDATE OF state ON obs
BEGIN
UPDATE task SET state = 2 WHERE (obs_id = old.id) and (new.state = 2);
END;
Но я не могу найти, как выразить это в sqlalchemy.Я прочитал вставить обновление по умолчанию несколько раз, но не могу найти способ.Я не знаю, возможно ли это вообще.