我有以下脚本:
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()?
答案 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;