MySQLと同様、InfiniDBはデフォルトではオートコミット機能が有効になっています。
そのため、コミットを発行していなくてもINSERT等のDML処理が完了した時点で内部的にそのSQLは自動でコミットされます。
オートコミット機能を無効にする場合は、以下の何れかの方法を実施してください。
■トランザクションの開始を宣言する
DML処理を実行する前に、BEGIN、START TRANSACTION、またはBEGIN WORKの何れかを実行して、トランザクションの開始を明示的に宣言します。この場合は、オートコミット機能が一時的に無効になり、コミット、またはロールバックが発行されるまで、そのトランザクションはコミット(ロールバック)されません。コミット、またはロールバックが発行されるとオートコミットが再度有効になるため、毎回トランザクションの開始を宣言する必要があります。
■セッションシステム変数を変更する
InfiniDBにログイン中のセッション内でSET autocommit=0を実行します。
1 2 |
mysql> SET autocommit = 0 ; Query OK, 0 rows affected (0.00 sec) |
この場合は、ログアウトしてセッションが終了するまではオートコミットが無効になります。そのため、明示的にトランザクションの開始を宣言しなくても、コミットやロールバックを発行することが可能になります。