【发布时间】:2017-03-20 12:04:14
【问题描述】:
我在postgres 有一个带有临时表的函数。
create or replace function sp_test_function()
returns table (id integer,enqu_id integer) as
$BODY$
BEGIN
create temporary table temp_table(
id serial,
enquiry_id integer
) on commit drop;
insert into temp_table(enquiry_id) select enquiry_id from sales_enquiry;
return query select t.id,enquiry_id from temp_table t;
END;
$BODY$
language plpgsql;
我在jasper 有一份报告,并使用上述函数获取数据。当我从服务器运行报告时出现此错误cannot execute CREATE TABLE in a read-only transaction。我试过SET TRANSACTION READ WRITE
$BODY$
BEGIN
SET TRANSACTION READ WRITE
create temporary table temp_table(
id serial,
enquiry_id integer
) on commit drop
但又出现了一个错误transaction read-write mode must be set before any query。 postgres函数中如何设置事务?
【问题讨论】:
-
问题不在postgresql函数内,而是jasper以只读模式启动事务,你不能在只读模式下启动读写事务,我可能弄错了
-
如何解决这个问题?
-
是的,谢谢老兄。终于找到答案了
-
你能发布一个对你有用的实际答案并关闭问题吗?