プライマリ・コンテンツに移動
Oracle® Database Oracleプリコンパイラのためのプログラマーズ・ガイド
12c リリース1 (12.1)
B71398-03
目次へ移動
目次
索引へ移動
索引

前
次

ガイドライン

次のガイドラインは、いくつかの一般的な問題を回避するのに役立ちます。

アプリケーションの設計について

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

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

ロックの取得について

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

PL/SQLの使用について

PL/SQLブロックがトランザクションの一部になっている場合、そのロック内のコミットおよびロールバックは、トランザクション全体に影響を与えます。次の例では、ロールバックは更新および挿入による変更を取り消します。

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