Blank?=Falseスマートフォン用の表示で見るBlank?=False「呉下の阿蒙にあらず」をモットーにしたITエンジニアの日々Blank?=Falseこの広告は、90日以上更新していないブログに表示しています。今回は、データベースの安全性のキモとなるトランザクションを勉強します。暗黙的なトランザクション気になったことトランザクションについてトランザクションとは?トランザクションとは、セットで実行されるべき1つ以上の更新処理の集まりのこと。DELETEのことです。下のイメージだと、データ挿入、データ更新、データ更新、データ削除を1つのトランザクションにしています。各DBMSで異なります。Oracleは常にトランザクションで処理するため、データベース接続時に自動的にトランザクションが開始され、トランザクションが終了されると自動的に再度トランザクションを開始するのでトランザクション開始コマンドというものはありません。本記事ではMySQLを使用しているので、以下のコマンドでトランザクションを開始します。以下のようなテーブルに対し、VALUEを現在の2倍の値に更新VALUEが20000を越えたものは20000に更新の2つの処理を行います。sec)ここまでで処理は完了です。この後、変更を保存するか、元に戻すかの2つの処理をおこなうことでトランザクションが終了します。COMMITトランザクションを終了し、保存します。ファイルで言えば上書き保存して終了です。これはすべてのDBMSで共通です。COMMIT;使用例トランザクション開始の使用例の処理を行った後、COMMITした場合、トランザクションが終了し、データが保存されます。sec)ROLLBACKトランザクションを終了し、トランザクション開始前に戻します。ファイルで言えば保存せず終了です。これはすべてのDBMSで共通です。ROLLBACK;使用例トランザクション開始の使用例の処理を行った後、ROLLBACKした場合、以下のように元のデータに戻ります。sec)暗黙的なトランザクションほとんどのDBMSは暗黙的にトランザクションを開始しています。MySQLの場合、初期設定では自動コミットモードとなっており、これは1つのSQL文で1つのトランザクションというルールが自動的に適用されるモードです。TRANSACTION〜COMMITが自動的に行われていることですね。Value=980;DBMSの内部ではこういう風に処理しています。Value=980;COMMIT;この特性のため、ROLLBACKしてもすでにCOMMITされているため戻せません。逆に、Oracleはデフォルトで最初のSQL文の処理を始める時点でトランザクションを始め、ユーザーがCOMMIT、もしくはROLLBACKするまでを1つのトランザクションとしています。そのため、COMMIT前であれば、ROLLBACKで今までの処理を取り消す事ができるようになっています。気になったこと暗黙的なトランザクションを行っているDBMSで、明示的なトランザクションを宣言した場合、どのように処理されるのでしょうか?考えられるケースは2つあります。Value=980;mysql>COMMIT;気になるので後日、調べてみようと思います。トランザクションTweet広告を非表示にする関連記事2016-11-26NoSQLとは先日、MongoDBの記事を書きました。今回は引き続きSQLのお勉強、述語を勉強していきます。»Profile某製造業の社内Sler。今のお仕事のメインはAccessとVBA。元パッケージソフト開発者。VBA、そしてRDBやNoSQLを組み合わせたアプリケーション開発を得意としています。福岡県、もしくは熊本県へIターン転職に向けて、DB/NoSQLの業務に関われる会社を探しています。レベル1取得しましたリファクタリングの帽子をかぶるということ勉強は大変だが役に立つCUIなCentOS7にcinnamonを導入するLinuxのコマンドはMacOSXでそのまま動くとは限らない月別アーカイブTwitterGooglePocketはてなブログをはじめよう!stonebeach-dakarさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。