SET TRANSACTION - 设置当前事务的特性

SYNOPSIS

 

SET TRANSACTION
    [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]
SET SESSION CHARACTERISTICS AS TRANSACTION
    [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]

DESCRIPTION 描述

SET TRANSACTION 命令为当前事务设置特性。 它对后面的事务没有影响。 SET SESSION CHARACTERISTICS 为一个会话中的每个事务设置缺省的隔离级别。 SET TRANSACTION 可以为一个独立的事务覆盖上面的设置。


可用的事务特性是事务隔离级别和事务访问模式(读/写或者只读)。


事务的隔离级别决定一个事务在同时存在其它并行运行的事务时它能够看到什么数据。

READ COMMITTED

一条语句只能看到在它开始之前的数据。这是缺省。
SERIALIZABLE

当前的事务只能看到在这次事务第一条查询或者修改数据的语句执行之前的数据。

 

Tip: 提示: 说白了,serializable(可串行化)意味着两个事务将把数据库保持在同一个状态, 就好象这两个事务是严格地按照先后顺序执行地那样。

 


事务隔离级别在事务中第一个数据修改语句 (SELECT, INSERT, DELETE, UPDATE, FETCH, COPY) 执行之后就不能再次设置。 参阅 Chapter 12 ``Concurrency Control'' 获取有关事务隔离级别和并发性控制的更多信息。


事务访问模式决定事务是读/写还是只读。读/写是缺省。如果一个 事务是只读,而且写入的表不是临时表,那么下面的 SQL 命令是不允许的:INSERT, UPDATE,DELETE,和 COPY TO; 而所有的 CREATE,ALTER,和 DROP 命令; COMMENT,GRANT,REVOKE, TRUNCATE;和 EXPLAIN ANALYZE 和EXECUTE 都不允许。这是一个高层次的只读概念,它并不阻止对磁盘的写入。

NOTES 注意


会话的缺省事务隔离级别也可以用命令

 

SET default_transaction_isolation = 'value'


以及在配置文件里设置。 参考 Section 16.4 ``Run-time Configuration'' 获取更多信息。

COMPATIBILITY 兼容性


两个命令都在 SQL 标准里定义了。SQL 里的缺省事务隔离级别是 SERIALIZABLE; 在 PostgreSQL 里,缺省隔离级别是 READ COMMITED,但是你可樊伟胜以用上面的描述修改它。 PostgreSQL 并没有提供隔离级别 READ UNCOMMITTED 和 REPEATABLE READ。 因为多版本并发控制,SERIALIZABLE 级别并非真正的可串行化。参阅 Chapter 12 ``Concurrency Control'' 获取细节。


在 SQL 标准里还有另外一种事务特性可以用这些命令设置:诊断范围的大小。这个概念只用于嵌入的 SQL。 

转载于:https://www.cnblogs.com/fanweisheng/p/11098347.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值