要件に応じて、固有の状況に直面しています。特定のサブミッターIDのみの表に仮想プライマリ・キーを作成したいと考えています。注:サブミッターIDは、表内の列の1つです。 [ORA-04091:表XYZが突然変異しており、トリガー/機能がそれを認識しない可能性があります]この場合、トリガーを使用することを決定しましたが、Oracle PLSQLトリガーのロジックのようなプライマリ・キーを作成中のコンパイル
ワークフローを理解するためのサンプル例:Submitte場合シーケンス
:
テーブル構造(シーケンス、Submitter_id、国、説明)
一意の主キーをr_id = 'SYSTEM'では、Countryに仮想プライマリキーの何かが必要です。更新中にエラーを与えているテーブルXYZのBEFORE INSERT OR UPDATEトリガのための
現在のコード:事前に
If (:NEW.Submitter_Id = 'SYSTEM') Then
BEGIN
SELECT count(1) INTO counterVariable
FROM XYZ
WHERE Country = :NEW.Country
And Submitter_Id = 'SYSTEM';
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20005, 'Sample Error');
END;
If (counterVariable != 0)
Then
raise_application_error(-20005, 'Primary Key Violation error');
End If;
End If;
感謝。
http://stackoverflow.com/questions/17609844/how-to-make-a-trigger-like-primary-key-constraint同様の質問が、どの具体的な解決策なし。プライマリキー制約やユニークなインデックスを伴わない私の問題を解決するための回避策を探しています。 – pOrinG