Являются ли функции PostgreSQL транзакционными?

Является ли функция PostgreSQL, например, следующая автоматически транзакционной?

CREATE OR REPLACE FUNCTION refresh_materialized_view(name)
  RETURNS integer AS
$BODY$
 DECLARE
     _table_name ALIAS FOR $1;
     _entry materialized_views%ROWTYPE;
     _result INT;
 BEGIN          

     EXECUTE 'TRUNCATE TABLE ' || _table_name;

     UPDATE materialized_views
     SET    last_refresh = CURRENT_TIMESTAMP
     WHERE  table_name = _table_name;

     RETURN 1;
END
$BODY$
  LANGUAGE plpgsql VOLATILE SECURITY DEFINER;


Другими словами, если во время выполнения функции произойдет ошибка, будут ли какие-либо измененияrolled back? Если это не поведение по умолчанию, как я могу сделать функциюtransactional?

Ответы на вопрос(4)

Ваш ответ на вопрос