取引を設定する
SET TRANSACTIONステートメントを使用して、現在の分離レベルをGLOBALまたはSESSIONベースで変更できます。この構文はSET transaction_isolation='new-value'の代替であり、MySQL と SQL 標準の両方との互換性のために含まれています。
あらすじ
- SetStmt
 - TransactionChars
 - IsolationLevel
 - AsOfClause
 
SetStmt ::=
    'SET' ( VariableAssignmentList |
    'PASSWORD' ('FOR' Username)? '=' PasswordOpt |
    ( 'GLOBAL'| 'SESSION' )? 'TRANSACTION' TransactionChars |
    'CONFIG' ( Identifier | stringLit) ConfigItemName EqOrAssignmentEq SetExpr )
TransactionChars ::=
    ( 'ISOLATION' 'LEVEL' IsolationLevel | 'READ' 'WRITE' | 'READ' 'ONLY' AsOfClause? )
IsolationLevel ::=
    ( 'REPEATABLE' 'READ' | 'READ' ( 'COMMITTED' | 'UNCOMMITTED' ) | 'SERIALIZABLE' )
AsOfClause ::=
    ( 'AS' 'OF' 'TIMESTAMP' Expression)
例
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-UNCOMMITTEDおよびSERIALIZABLEはサポートされていません。 REPEATABLE-READ分離レベルは、MySQL と部分的に互換性のあるスナップショット分離テクノロジを使用して実現されます。- 悲観的トランザクションでは、TiDB は MySQL と互換性のある 2 つの分離レベル
REPEATABLE-READとREAD-COMMITTEDをサポートします。詳細な説明については、 分離レベルを参照してください。