MySQLのrollback--トランザクションロールバック
1517 ワード
MySQL version:5.7まず、トランザクションロールバックはDMLにのみ使用され、DDLには適用されません.DDLのロールバックについては、後で話す時間があります.
rollbackとcommitについて、MySQLのドキュメントはすでに詳しく話していますが、簡単な例を選んでからくどくど言います.
トランザクションを開くには、上記の例の
大量のupdateやdeleteを実行するときは、必ず事務を使うように注意しましょう.
参考:MySQL公式ドキュメント:https://dev.mysql.com/doc/refman/8.0/en/innodb-autocommit-commit-rollback.html
rollbackとcommitについて、MySQLのドキュメントはすでに詳しく話していますが、簡単な例を選んでからくどくど言います.
mysql> CREATE TABLE customer (a INT, b CHAR (20), INDEX (a));
Query OK, 0 rows affected (0.00 sec)
mysql> -- Do a transaction with autocommit turned on.
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO customer VALUES (10, 'Heikki');
Query OK, 1 row affected (0.00 sec)
mysql> COMMIT;
トランザクションを開くには、上記の例の
START TRANSACTION;
または簡単なbegin;
を使用します.コミットトランザクション、すなわちDMLの変更を確認し、commit;
を使用してトランザクションをロールバックします.すなわち、ロールバックする前の操作を使用します.rollback;
を使用します.また、コミットしなくてもロールバックしない場合は、実行されるDMLは現在のセッションで有効であり、他のセッションでは有効ではありません(接続ウィンドウを再開してみてください)ので、beginは最初はcommitで終わるか、rollbackで終わるかのいずれかです.大量のupdateやdeleteを実行するときは、必ず事務を使うように注意しましょう.
参考:MySQL公式ドキュメント:https://dev.mysql.com/doc/refman/8.0/en/innodb-autocommit-commit-rollback.html