📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

SET TRANSACTION

SET TRANSACTION 语句可用于在 GLOBALSESSION 级别更改当前的隔离级别。此语法是 SET transaction_isolation='new-value' 的替代方案,旨在兼容 MySQL 和 SQL 标准。

概要

SetStmt
SETVariableAssignmentListPASSWORDFORUsername=PasswordOptGLOBALSESSIONTRANSACTIONTransactionCharsCONFIGIdentifierstringLitConfigItemNameEqOrAssignmentEqSetExpr
TransactionChars
ISOLATIONLEVELIsolationLevelREADWRITEREADONLYAsOfClause
IsolationLevel
REPEATABLEREADREADCOMMITTEDUNCOMMITTEDSERIALIZABLE
AsOfClause
ASOFTIMESTAMPExpression

示例

mysql> SHOW SESSION VARIABLES LIKE 'transaction_isolation'; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+ 1 row in set (0.00 sec) mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; Query OK, 0 rows affected (0.00 sec) mysql> SHOW SESSION VARIABLES LIKE 'transaction_isolation'; +-----------------------+----------------+ | Variable_name | Value | +-----------------------+----------------+ | transaction_isolation | READ-COMMITTED | +-----------------------+----------------+ 1 row in set (0.01 sec) mysql> SET SESSION transaction_isolation = 'REPEATABLE-READ'; Query OK, 0 rows affected (0.00 sec) mysql> SHOW SESSION VARIABLES LIKE 'transaction_isolation'; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+ 1 row in set (0.00 sec)

MySQL 兼容性

  • TiDB 仅支持语法上设置事务为只读的能力。
  • 不支持 READ-UNCOMMITTEDSERIALIZABLE 这两个隔离级别。
  • REPEATABLE-READ 隔离级别通过使用快照隔离技术实现,部分兼容 MySQL。
  • 在悲观事务中,TiDB 支持两个与 MySQL 兼容的隔离级别:REPEATABLE-READREAD-COMMITTED。详细描述请参见 Isolation Levels

相关链接

文档内容是否有帮助?