为什么txid会递增?

时间:2015-09-16 14:31:06

标签: postgresql psql

我有以下脚本:

select txid_current();

显示的txid是= 001

begin;
insert into tab values(10,20); insert into values(20,40);
commit;

现在我做的时候:     选择txid_current();

txid见:004 为什么增加2,即为什么txid增加2不应该增加1,即txid应该是003不应该选择txid_current()显示003?

有没有办法将003显示为当前的txid()?

1 个答案:

答案 0 :(得分:2)

<强> Transaction

  

PostgreSQL实际上将每个SQL语句视为正在执行   在交易中。如果您不发出BEGIN命令,那么每个命令都是如此   个别语句具有隐式BEGIN和(如果成功)COMMIT   缠绕着它。由BEGIN和BEGIN包围的一组陈述   COMMIT有时被称为事务块。

这意味着当您运行select txid_current();时,您处于交易中,并且在此次运行后您将获得新的交易ID。

begin;
select txid_current(); // 1
end;

begin;
insert into tab values(10,20); insert into values(20,40);
select txid_current(); // 2
commit;

begin;
select txid_current(); // 3
end;