【发布时间】:2021-07-08 01:19:07
【问题描述】:
我在plpgsql中有如下声明:
CREATE OR REPLACE FUNCTION json_update (mdata JSON) RETURNS void AS $$
DECLARE
mdata JSON = mdata;
mRecord record;
BEGIN
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SELECT
COALESCE(searches, 0) AS searched_quantity,
COALESCE(event, '2030-06-29') AS event_date,
INTO mRecord
FROM json_populate_record(NULL::my_app.app_report, mdata::JSON);
--here I also do some lengthy write operations and some calculation taking above data
COMMIT;
END;
$$ LANGUAGE plpgsql;
SELECT * FROM json_update('{"event":"2021-07-07","searches":10}');
我在以下行中遇到语法错误:BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
据我所知,这就是我们在存储过程之外设置事务级别的方式,如果我在psql 命令行中这样做,语法就很好。顺便说一句,我从pgAdmin 的查询面板执行此操作。
在存储过程中设置事务级别是否有另一种语法?顺便说一句,我已经read this and it doesn't really answer my question.
【问题讨论】:
标签: postgresql