【发布时间】:2011-10-25 22:26:18
【问题描述】:
我有两个通过外键关联的表,这里它们使用声明式映射
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)
所以,我想在 obs.state 更改为值 2 时更新相关的 task.state。目前我正在手动进行(使用称为任务的关系)
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 中表达这一点。我已经读了好几遍insert update defaults,但找不到路。不知道有没有可能。
【问题讨论】:
标签: python triggers sqlalchemy