MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
MySQL - トランザクションのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
MySQL - トランザクション
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == トランザクションとは、複数の処理を1つにまとめることである。<br> <br> 例えば、<u>A -> B ->C</u>という順にフローが進む時、A、B、Cが全て問題なく実行可能な場合のみ同時に実行することをトランザクション処理という。<br> AとBの処理は成功したがCの処理に失敗した場合は、AおよびBの処理も実行されずロールバックされる。<br> <br><br> == トランザクション処理 == * <code>START TRANSACTION</code>文、または、<code>BEGIN</code>文は、新しいトランザクションを開始する。<br> * <code>COMMIT</code>文は、現在のトランザクションをコミットして、その変更を永続的なものにする。<br> * <code>ROLLBACK</code>文は、現在のトランザクションをロールバックして、その変更を取り消す。<br> * <code>SET autocommit</code>文は、現在のセッションのデフォルトの自動コミットモードを有効または無効にする。<br> <br> デフォルトでは、MySQLは自動コミットモードが有効の状態で動作する。<br> したがって、トランザクション内ではない場合、各ステートメントは<code>START TRANSACTION</code>文および<code>COMMIT</code>文で囲まれているかのようにアトミックである。<br> <code>ROLLBACK</code>文を使用して処理を元に戻すことはできないが、ステートメントの実行中にエラーが発生した場合、ステートメントはロールバックされる。<br> <br> 一連のステートメントに対して自動コミットモードを暗黙的に無効にするには、<code>START TRANSACTION</code>文を使用する。<br> <code>START TRANSACTION</code>文を実行する時、そのトランザクションを<code>COMMIT</code>文または<code>ROLLBACK</code>文で終了するまで、自動コミットは無効のままとなる。<br> その後、自動コミットモードはその以前の状態に戻る。<br> <syntaxhighlight lang="mysql"> START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT; </syntaxhighlight> <br> 複数の実行する処理を<code>START TRANSACTION</code>文または<code>BEGIN</code>文と<code>COMMIT</code>文または<code>ROLLBACK</code>文で囲む。<br> <br> 以下の例では、全ての処理がエラー無く完了する場合のみコミットされる。<br> もし、いずれかにおいてエラーが発生する場合は、コミットされずに自動的にロールバックされる。<br> <syntaxhighlight lang="mysql"> START TRANSACTION; -- <処理 1>; -- <処理 2>; COMMIT; </syntaxhighlight> <br><br> == 自動コミットモード == 自動コミットモードを明示的に無効にするには、変数<code>autocommit</code>を<code>0</code>に設定する。<br> ただし、自動コミットモードを無効にした場合、データベースやテーブルの変更において、トランザクションセーフテーブル (InnoDBまたはNDBのテーブル等) への変更が永続的になることはない。<br> <code>COMMIT</code>文を使用して変更をディスクに格納する、または、<code>ROLLBACK</code>文を使用して変更を無視する必要がある。<br> <syntaxhighlight lang="mysql"> SET autocommit=0; </syntaxhighlight> <br> 変数<code>autocommit</code>はセッション変数であるため、セッションごとに設定する必要がある。<br> <br><br> __FORCETOC__ [[カテゴリ:MySQL]]
MySQL - トランザクション
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse