确定交易是否有效(Postgres)

时间:2015-02-12 19:14:17

标签: postgresql

如何判断交易是否有效?我希望能够执行创建保存点的SQL,无论事务当前是否处于活动状态(即,如果它不活动,我想&#34; BEGIN&#34;)< / p>

2 个答案:

答案 0 :(得分:2)

你可以做到

begin;
savepoint foo;

&#34;开始;&#34;如果已经有交易,那将是一个无操作。

另见:https://stackoverflow.com/a/28802471/435563

答案 1 :(得分:0)

您应该能够分辨出SQL的区别:

START TRANSACTION;
SELECT xact_start, backend_xid, state, state_change FROM pg_stat_activity;
ROLLBACK WORK;

请参见https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW

还有txid_status(),您可以use to control transactions,但does not seem to work from within PL/pgSQL