このセクションに示されているステートメント (およびそのすべてのシノニム) は、ユーザーがこのステートメントを実行する前に COMMIT
を実行したかのように、現在のセッション内でアクティブなすべてのトランザクションを暗黙的に終了します。
これらのステートメントのほとんどは、実行後に暗黙的なコミットを引き起こします。 その目的は、そのような各ステートメントを独自の特別なトランザクションで処理することです。 トランザクション制御ステートメントおよびロックステートメントは例外です: 実行前に暗黙的なコミットが発生した場合、後に別のコミットは発生しません。
-
データベースオブジェクトを定義または変更するデータ定義言語 (DDL) ステートメント。
ALTER EVENT
,ALTER FUNCTION
,ALTER PROCEDURE
,ALTER SERVER
,ALTER TABLE
,ALTER VIEW
,CREATE DATABASE
,CREATE EVENT
,CREATE FUNCTION
,CREATE INDEX
,CREATE PROCEDURE
,CREATE ROLE
,CREATE SERVER
,CREATE SPATIAL REFERENCE SYSTEM
,CREATE TABLE
,CREATE TRIGGER
,CREATE VIEW
,DROP DATABASE
,DROP EVENT
,DROP FUNCTION
,DROP INDEX
,DROP PROCEDURE
,DROP ROLE
,DROP SERVER
,DROP SPATIAL REFERENCE SYSTEM
,DROP TABLE
,DROP TRIGGER
,DROP VIEW
,INSTALL PLUGIN
,RENAME TABLE
,TRUNCATE TABLE
,UNINSTALL PLUGIN
。CREATE TABLE
およびDROP TABLE
ステートメントは、TEMPORARY
キーワードが使用されている場合はトランザクションをコミットしません。 (これは、コミットを発生させるALTER TABLE
やCREATE INDEX
などの、一時テーブルに対するその他の操作には適用されません。) ただし、暗黙的なコミットは発生しませんが、ステートメントのロールバックもできません。つまり、このようなステートメントを使用すると、トランザクションのアトミック性が侵害されます。 たとえば、CREATE TEMPORARY TABLE
を使用したあとにトランザクションをロールバックしても、そのテーブルは存在し続けます。InnoDB
でのCREATE TABLE
ステートメントは、1 つのトランザクションとして処理されます。 つまり、ユーザーがROLLBACK
を発行しても、ユーザーがそのトランザクション中に実行したCREATE TABLE
ステートメントは元に戻されません。CREATE TABLE ... SELECT
は、一時テーブル以外のテーブルを作成している場合、そのステートメントが実行される前後に暗黙的なコミットを発生させます。 (CREATE TEMPORARY TABLE ... SELECT
に対してコミットは発生しません。) mysql
データベース内のテーブルを暗黙的に使用または変更するステートメント。ALTER USER
,CREATE USER
,DROP USER
,GRANT
,RENAME USER
,REVOKE
,SET PASSWORD
。-
トランザクション制御およびロックステートメント。
BEGIN
、LOCK TABLES
、SET autocommit = 1
(この値がまだ 1 でない場合)、START TRANSACTION
、UNLOCK TABLES
。UNLOCK TABLES
は、非トランザクションテーブルロックを取得するために現在LOCK TABLES
でロックされているテーブルがある場合にのみ、トランザクションをコミットします。FLUSH TABLES WITH READ LOCK
はテーブルレベルのロックを取得しないため、このステートメントに続くUNLOCK TABLES
に対してコミットは発生しません。トランザクションをネストすることはできません。 これは、
START TRANSACTION
ステートメントまたはそのシノニムのいずれかを発行するときに、現在のすべてのトランザクションに対して実行される暗黙的なコミットの結果です。XA トランザクションが
ACTIVE
状態にある間に、暗黙的なコミットを発生させるステートメントをそのトランザクションで使用することはできません。BEGIN
ステートメントは、BEGIN ... END
複合ステートメントを開始するBEGIN
キーワードの使用とは異なります。 後者は暗黙的なコミットを発生させません。 セクション13.6.1「BEGIN ... END 複合ステートメント」を参照してください。 データロードステートメント。
LOAD DATA
。LOAD DATA
では、NDB
ストレージエンジンを使用するテーブルに対してのみ暗黙的なコミットが発生します。管理ステートメント。
ANALYZE TABLE
,CACHE INDEX
,CHECK TABLE
,FLUSH
,LOAD INDEX INTO CACHE
,OPTIMIZE TABLE
,REPAIR TABLE
,RESET
(ただし、RESET PERSIST
)。レプリケーション制御ステートメント。
START REPLICA | SLAVE
,STOP REPLICA | SLAVE
,RESET REPLICA | SLAVE
,CHANGE REPLICATION SOURCE TO
,CHANGE MASTER TO
。