我在Ubuntu 10.04 Lucid Lynx上运行PostgreSQL 8.4数据库服务器和psql终端前端,并希望在多个连续的 psql 会话中跨越单个事务。
当我使用 psql 连接到我的数据库时,会建立一个新连接,并为此连接创建一个服务器后端进程。当我断开连接时,连接被释放并且后端进程终止。一个(非 XA*)事务被绑定到一个连接的范围内,所以显然没有直接的方法可以将单个事务跨越多个 psql 会话。
我想要实现的是以下命令序列可以在单个事务中运行,因此在每次调用时返回相同的事务时间戳now():
tscho@test:~$ sudo -u postgres psql -p 5433 --no-align --tuples-only -c "select now()"
2012-02-17 21:25:07.027056+01
tscho@test:~$ sudo -u postgres psql -p 5433 --no-align --tuples-only -c "select now()"
2012-02-17 21:25:09.487601+01
Run Code Online (Sandbox Code Playgroud)
数据库日志:
2012-02-17 21:25:07 CET 0- LOG: connection received: host=[local]
2012-02-17 21:25:07 CET 0- LOG: connection authorized: user=postgres database=postgres
2012-02-17 21:25:07 CET 0-2/0 LOG: duration: 0.366 ms statement: select now()
2012-02-17 21:25:07 …Run Code Online (Sandbox Code Playgroud)