システム開発ブログ/ システムソリューション部 Yahoo!ブックマークに登録 Google ブックマーク はてなブックマーク Livedoorクリップ シェア

システム開発ブログ

Twitterでilovex_officialをフォローしてください

最近の記事

カテゴリー

部署

月別アーカイブ

以前の部署別ブログ

【Oracle】自律型トランザクションについて

青木
青木 (2010年3月 8日 15:12)
システムソリューション部 / データベース
みなさん、こんにちは。

自律型トランザクションというのは親のトランザクションとは別に、
子供だけでトランザクションを終わらせたい時に使うことが出来ます。

早速、例を挙げます。

■ 用意するテーブル
-- 自律型トランザクションによりデータが登録されるテーブル
CREATE TABLE TABLE1 (COLUMN1 VARCHAR2(40))

-- ロールバックによりデータが登録されないテーブル
CREATE TABLE TABLE2 (COLUMN1 VARCHAR2(40))
■ 用意するプロシージャ
CREATE OR REPLACE PROCEDURE PROCEDURE1
IS
  --これにより自律型トランザクションが使用できます
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  INSERT INTO TABLE1 VALUES ('これは登録されます');
  COMMIT;
EXCEPTION WHEN OTHERS THEN
  ROLLBACK;
END;

上記のテーブルとプロシージャを作成した後に、次の処理を実行してください。
DECLARE
  ROWCOUNT NUMBER;
BEGIN
  --このINSERT文で親のトランザクションが開始されます
  INSERT INTO TABLE2 VALUES ('これはロールバックされます'); 

  --プロシージャ内でトランザクションが完結します
  PROCEDURE1;

  --TABLE2への登録のみロールバックされます
  ROLLBACK;

  SELECT COUNT(*) INTO ROWCOUNT FROM TABLE1;
  DBMS_OUTPUT.PUT_LINE('TABLE1の件数:' || ROWCOUNT);

  SELECT COUNT(*) INTO ROWCOUNT FROM TABLE2;
  DBMS_OUTPUT.PUT_LINE('TABLE2の件数:' || ROWCOUNT);
END;

TABLE1の件数:1
TABLE2の件数:0

と表示されますね。

詳細はOracleのサイトをご覧下さい。


「システム開発ブログ」へのコメントやご意見等ありましたら、 ファンページまでお願いします。  Facebook のファンページ

お問い合せ・情報はこちらの電話番号におかけください:03-3232-2525 お問合せ・資料請求はこちらをクリックしてください
ページのトップ
システム開発・一括受託開発。見積依頼受付中

システム開発専用サイト

システム開発の流れ・手順、実績など。アイロベックスのシステム開発を紹介。

VB .NETを主言語としたWebアプリケーションの開発

要件分析から保守まで、お客様の現場での問題解決だけでなく、IT経営の援護者としてトータルソリューションサービスを提供しています。

MovableType を使ったウェブサイト構築

魅力あるウェブサイトデザイン、構成はもとよりMovableTypeを使用したウェブサイトの作成、JAVA、CGIによる注文フォームの作成等、ビジネスを強力にサポートします。

フォルダーアクセス権限確認ツール『AD-Folder』

Windowsフォルダーアクセス権限確認ツール

フォルダーアクセス権限を一目で確認。使用版を無償でご利用いただけます。

スクール運営を応援する講座情報管理システム『CMS+AD for School』

Webとリアルをつなぐコンテンツマネージメントシステム

Webサイト・モバイルサイト・チラシ(PDF)・カタログ(InDesign)を、簡単かつ正確に作成できます。

「システム開発ブログ」の更新情報をTwitterで。

Twitter公式アカウントに認定されています

「システム開発ブログ」の更新情報をTwitterで。ぜひ、フォローをお願いします。