• ベストアンサー

トランザクション

データベースに置いてトランザクションは 多くのプログラミング言語の関数みたいなものですか?

  • MySQL
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • bardfish
  • ベストアンサー率28% (5029/17763)
回答No.2

RDBMSでのTransactionとは、ROLLBACK可能な処理単位のことです。 RDBMSではテーブルへのinsert、delete、updateと更新の処理が幾つかありますが、更新を進めていったなかで全てキャンセルしたい自称が発生することがあります。 その時、Transactionを使わないとバックアップからの復旧くらいしか手段がないことになりますが、Transactionを利用すると更新処理をキャンセルしてトランザクション処理開始前の状態に戻すことが可能となります。 クライアント側やサーバープロセスのプログラムでbegin transactionなどの宣言で開始することもあれば、ストアードプロシージャ内で宣言することもあります。 勿論、大規模な処理の場合はメモリ搭載量や表領域などシステム要件に依存することもあるのでシステ家設計のときにある程度考慮させないと後々破綻して混乱を招くだけになりますから… ということで、関数ではなくRDBMS特有の処理単位となります。 私はOracleで学んだのでMySQLとは言葉の使い方が違うかもしれませんが、そこは読み手側で読み替えてください。

kirawaremono_
質問者

お礼

回答ありがとうございます!

その他の回答 (1)

  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.1

少し違うかな。 トランザクションとは1つのまとまった処理という意味では関数と同じですが、 トランザクションはやりかけたモノを元に戻す事ができます。 銀行で1万円引き出した時、通帳から1万円引き、機械から1万円を出すという 処理があります。何処かでエラーが生じて機械から1万円が出せなくなったら 通帳から引いた1万円をもとに戻すことができます。 関数では1万円は戻りません。

kirawaremono_
質問者

お礼

回答ありがとうございます!

関連するQ&A

  • トランザクション

    データベースで何かすることをトランザクションと言うのでしょうか?

  • トランザクション

    データベースのトランザクションで Aというデータがあるとき begin から始まって end で終了ですが その間に read(A) write(A:A*100) という処理を行ったとき 実際にA*100が書き込まれるのは end したときなのか write したときなのか どちらですか?

  • JDBCでのトランザクション・排他制御

    初めまして。 まだ初心者の身なのですが質問させてもらいます。 サーブレット・jspでJDBCを使いデータベースとの処理を行って簡単なショッピングサイトのようなものを作っています。 まずsetAutocomit() = falseでトランザクションを開始し データベースのUPDATEを行って、最後に確定する場合comit キャンセルする場合rollbackとしています。 しかし1人のユーザーがトランザクションを行っている場合に他のユーザーからアクセスされた場合にデータベースのトランザクション中の値を取ってきたいのですが、どうしてもトランザクションでUPDATEされる前の値になってしまうのです。 これを防止するのが排他制御というものだというのは分かったのですが 実際のやり方については、結構調べたのですがあまり載っていませんでした。 データベースはMySQLを使っています。 よろしければJDBCでの排他制御についてのアドバイス、もしくは詳しく説明されているサイトなどございましたら是非教えてください。 よろしくお願いします。

  • トランザクションってなんですか?

    先輩社員に「このテーブルってトランザクションだよね?」って聞かれました。 トランザクションの意味がわからなかったので答えれず、「トランザクションってどういうことですか?」って聞き返しても「基本的すぎるから」と言われて教えてもらえませんでした。 トランザクションのテーブルとはどういう意味なのでしょうか? マスタ以外という意味なんでしょうか? 教えてください。

  • トランザクション処理がうまくいかない

    ASPでトランザクションを行っています。 コネクションオブジェクトのErrors.Countプロパティでエラーの発生した数を知りたいのですが、データベースの更新をしたときに、入力規則に違反していてもエラーとしてカウントされないのです。なぜですか? もしかしてこのエラーはコネクションオブジェクトの管轄外なのでしょうか?

  • トランザクション処理システムについて

    現在大学で会計情報について学んでいるのですが トランザクション処理システムがよくわかりません。 プログラミングで行なわれるようなトランザクションについてはWebで調べてわかったつもり (inputとoutputの処理中に他からのinputがあった場合に整合性が取れなくなるので、それを回避するためにIPOを一連の動作とすることで変更があった場合に偽を返す) なのですが、それが会計システムでどのように使われるのか、また意味するのかがよくわかりません。 教えてください、よろしくお願いします

  • トランザクションについてです

    トランザクションの意味を教えてください。お願いします。

  • トランザクション完全について

     「トランザクション完全」とはどのような性質のことでしょうか。

  • トランザクションのすくみについて

     トランザクションの「すくみ」とはどういったものなのでしょうか? できれば例をあげて説明していただけるとうれしいです。

  • トランザクション中に別のトランザクションは開始できますか?

    DBはサイベースを使っています。初心者です。 以下のような動作をしているシステムの一部を改造することになりました。 1)カーソルAオープン 2)トランザクション開始 3)フェッチ 4)1トランザクションでの処理数分終了済みでなければ、3)から繰り返し 5)commit/rollback 6)終了済みでなければ 2)から繰り返し 7)カーソルAクローズ 今回、3)でフェッチしたレコードのある項目をキーとして 別のテーブルを検索しなければならないのですが、 3)の後に、カーソルBオープンとフェッチのみを追加しただけでは問題があると思うのですが、同一プロセスから、トランザクション中に別のトランザクションを開始することは可能なのでしょうか? なお、このトランザクションでは、レコードの追加や削除は行いません。 どうぞよろしくお願いいたします。