MySQLで新しいトランザクションを開始する方法|START TRANSACTIONとAUTOCOMMITの使い方
MySQLトランザクションの開始方法
MySQLで新しいトランザクションを開始するには、START TRANSACTIONコマンドを実行します。トランザクションの挙動は、SQLのAUTOCOMMITモードの設定によって異なります。
AUTOCOMMIT ON(デフォルト)モードの場合
デフォルト設定である「AUTOCOMMIT ON」モードでは、各SQLステートメントがそれぞれ独立した完全なトランザクションとして扱われ、実行が完了すると自動的にコミットされます。このモードは、セッション変数AUTOCOMMITを1に設定することで有効になります。
SET AUTOCOMMIT = 1 mysql> SET AUTOCOMMIT = 1; Query OK, 0 rows affected (0.07 sec)
AUTOCOMMIT OFFモードの場合
この自動コミットの挙動を変更したい場合は、「AUTOCOMMIT OFF」モードに切り替えます。このモードでは、以降の一連のSQLステートメントがひとつのトランザクションとして扱われ、明示的にCOMMITステートメントを発行するまで、どの操作もコミットされません。また、新しいセッションにおける最初の実行可能なステートメントが、暗黙的に複数ステートメントからなる新しいトランザクションを開始します。セッション変数AUTOCOMMITを0に設定することで、このモードへ切り替えられます。
SET AUTOCOMMIT = 0 mysql> SET AUTOCOMMIT = 0; Query OK, 0 rows affected (0.00 sec)
InnoDBでの注意点
InnoDBストレージエンジンでトランザクションを扱う場合は、SET AUTOCOMMIT = 0を使用する代わりに、COMMITコマンドで明示的にコミットすることが推奨されます。
START TRANSACTIONコマンドの実行例
AUTOCOMMITのいずれのモードにおいても、次のようにSTART TRANSACTIONコマンドを実行すればトランザクションを開始できます。
mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec)
実際には、このクエリによって「トランザクションが終了するまで、以降のステートメントをひとつの作業単位として扱うこと」をMySQLに通知しています。
-
【保存版】MySQLのrootユーザーから失われた全権限を復元する方法
MySQLのrootユーザーから権限が失われてしまった場合でも、UPDATE文を使えば全権限を復元することができます。本記事では、rootユーザーの特権(Super_priv)や権限委譲権限(Grant_priv)を復旧させる具体的な手順を解説します。 手順1:mysqldを--skip-grant-tablesオプションで再起動する まず、現在稼働しているmysqld(MySQLサーバー)を停止します。その後、--skip-grant-tablesオプションを付けて再起動してください。このオプションを指定すると、権限テーブル(grant tables)が読み込まれずにサーバーが起動するため、
-
【MySQL入門】別のユーザーとしてログインする方法をわかりやすく解説
MySQLで別のユーザーとしてログインしたい場合は、mysql -u ユーザー名 -p コマンドを使用します。この記事では、新しいユーザーの作成から、作成したユーザーでのログイン方法まで、手順を追って詳しく解説します。別のユーザーとしてログインするための基本構文別のユーザーとしてMySQLにログインする際の基本構文は以下の通りです。> mysql -u yourUsername -pEnter password:コマンドを実行してEnterキーを押すと、パスワードの入力を求められます。ここに該当ユーザーのパスワードを入力すればログインできます。ステップ1:新しいユーザーを作成するまずは、