postgresql表中间加列_PostgreSQL 事务控制及invalid transaction termination研究

本文探讨了在使用PostgreSQL时遇到的'invalid transaction termination'错误,特别是在存储过程和Python程序调用中。分析了该错误产生的原因,即存储过程中不能执行事务控制语句,特别是当调用在事务块中执行时。解决方案是在应用程序中设置autocommit为True,以利用数据库自身的事务。官方文档进一步解释了事务控制的限制,强调了在嵌套CALL或DO调用中没有其他命令介入的重要性。
摘要由CSDN通过智能技术生成
PostgreSQL 事务控制

ead09f399777b8a1e9080deac384aa7c.png

在我们做PG迁移的时候,用AWS工具经常会遇到这样的提示“Transactioncontrol is only possible from the top level or nested callinvocations without any other intervening command”

在点一下具体的问题,如上图所示,发现是commit的问题。

这里我写了一个存储过程,用python程序调用来测试了一下这个问题。

1.首先创建一个表

create tabletest(a1,a2) as select 1 n,current_timestamp t;

2.接下来创建一个存储过程

create or replaceprocedure test_insert(a1 int, a2 int) as

$$

begin

for i in a1..a2loop

insert into testvalues (i,current_timestamp);

commit;

end loop;

end;

$$ language plpgsql;

3.在命令行执行调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值