default_transaction_read_only
是一个配置参数,用于确定事务默认是否为只读。
default_transaction_read_only
在PostgreSQL 7.4 中添加。
默认值
的默认值为:default_transaction_read_only
off
。
用法
default_transaction_read_only
在主服务器上默认为 off
。在备用服务器上始终为 on
。
libpq
default_transaction_read_only
是报告给 libpq 连接的参数之一,可以使用以下命令查询:
PQparameterStatus(conn, "default_transaction_read_only")
按 PostgreSQL 版本分列的详细信息
default_transaction_read_only (PostgreSQL 17)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
待重启 |
false |
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 16)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
待重启 |
false |
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 15)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
待重启 |
false |
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 14)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
待重启 |
false |
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 13)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
待重启 |
false |
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 12)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
待重启 |
false |
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 11)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
待重启 |
false |
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 10)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
待重启 |
false |
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 9.6)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
待重启 |
false |
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 9.5)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
待重启 |
false |
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 9.4)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 9.3)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 9.2)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 9.1)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 9.0)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 8.4)
设置 |
off |
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 8.3)
设置 |
|
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
文档: default_transaction_read_only
default_transaction_read_only (PostgreSQL 8.2)
设置 |
|
单位 |
|
类别 |
客户端连接默认值/语句行为 |
简短描述 |
设置新事务的默认只读状态。 |
额外描述 |
|
上下文 |
用户 |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
文档: default_transaction_read_only
变更历史
示例
default_transaction_read_only
的基本用法示例
postgres=# SHOW transaction_read_only;
transaction_read_only
-----------------------
off
(1 row)
postgres=# BEGIN;
BEGIN
postgres=*# SET TRANSACTION READ ONLY;
SET
postgres=*# SHOW transaction_read_only;
transaction_read_only
-----------------------
on
(1 row)
这等效于(在主服务器上)
postgres=# BEGIN ;
BEGIN
postgres=*# SET transaction_read_only = on;
SET
postgres=*# SHOW transaction_read_only;
transaction_read_only
-----------------------
on
(1 row)
postgres=*# INSERT INTO foo values(1);
ERROR: cannot execute INSERT in a read-only transaction
在备用服务器上,default_transaction_read_only
始终为 on
postgres=# SELECT pg_is_in_recovery();
pg_is_in_recovery
-------------------
t
(1 row)
postgres=# SHOW transaction_read_only;
transaction_read_only
-----------------------
on
(1 row)
无法在备用服务器上设置 default_transaction_read_only
postgres=# SET transaction_read_only = off;
ERROR: cannot set transaction read-write mode during recovery