Я пытаюсь создать следующий триггер:
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 в миграциях. Есть ли способ сделать это?