我正在尝试创建以下触发器:
create_update_rating_trigger = sa.DDL(
f'''
CREATE FUNCTION update_rating() RETURNS TRIGGER AS $$
BEGIN
UPDATE "{RATING_TABLE}" SET
{AVERAGE} = (({AVERAGE} * {VOTES}) + new.{VALUE}) / ({VOTES} + 1),{VOTES} = {VOTES} + 1
FROM "{USER_TABLE}"
WHERE
"{USER_TABLE}".{USER_ID} = new.{RATED_USER_ID}
AND "{USER_TABLE}".{USER_RATING_ID} = "{RATING_TABLE}".{RATING_ID};
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER update_rating_trigger
AFTER INSERT ON vote
FOR EACH ROW
EXECUTE PROCEDURE update_rating();
'''
)
sa.event.listen(ratings,'after_create',create_update_rating_trigger)
我执行时的空档
alembic revision --autogenerate
它不能在迁移中创建事务性DDL。有办法吗?