プライマリ・コンテンツに移動
Pro*C/C++プログラマーズ・ガイド
12c リリース1(12.1)
B71397-03
目次へ移動
目次
索引へ移動
索引

前
次

ガイドライン

次のガイドラインに従うと、いくつかの問題を回避できます。

アプリケーションの設計

アプリケーションを設計するときは、論理的に関連する処理を1つのトランザクション内にグループ化してください。正しく設計されたトランザクションには、与えられた作業を完了するために必要なステップが、すべて過不足なく含まれています。

表を参照するデータは一貫している必要があります。したがって、トランザクション内のSQL文は、一貫した方法でデータを変更する必要があります。 たとえば、2つの銀行口座間の資金振替には、一方の口座の借方勘定と他方の口座の貸方勘定が含まれています。どちらの処理も、正常終了または失敗が同時であることが必要です。一方の口座への新規預金など、関連のない更新はトランザクションに含めないでください。

ロックの取得

アプリケーション・プログラムにSQLのロック文が含まれている場合は、ロックを要求するOracleユーザーに、そのロックを取得する権限があるか確認してください。データベース管理者(DBA)は、どの表でもロックできます。それ以外のユーザーは、自分が所有する表または権限を持つ表(ALTER、SELECT、INSERT、UPDATEおよびDELETEなど)のみロックできます。

PL/SQLの使用方法

PL/SQLブロックがトランザクションの一部になっている場合、そのブロック内のCOMMITとROLLBACKは、そのトランザクション全体に影響します。次の例では、ROLLBACKはUPDATEおよびINSERTによる変更を取り消します。

EXEC SQL INSERT INTO EMP ... 
EXEC SQL EXECUTE 
    BEGIN 
        UPDATE emp ... 
        ... 
    EXCEPTION 
        WHEN DUP_VAL_ON_INDEX THEN 
            ROLLBACK; 
        ... 
    END; 
END-EXEC; 
...