私は3つのテーブルA、B、Cを持っています。これらの 3 つのテーブルのストアド プロシージャがあり、結合条件が 4 番目のテーブル D に挿入されています。今、私が必要としているのは、これら 3 つのテーブル (A、B、C) に対して行われた "ANY INSERT OR UPDATE" で、4 番目のテーブル D を更新する必要があります。 pl/sql でトリガーを記述する方法を教えてください。
質問する
15842 次
2 に答える
1
で必要な更新を行う 3 つのトリガーが必要ですD
。たとえば、テーブルのA
場合、これは次のようになります。
CREATE OR REPLACE TRIGGER trg_ins_upd_A
AFTER INSERT OR UPDATE ON A
FOR EACH ROW
DECLARE
-- required declarations
BEGIN
IF INSERTING THEN
UPDATE D
SET column1 = :new.column
WHERE column1 = :old.column ...
END IF;
IF UPDATING THEN
-- do required updates on D here
END IF;
END;
この更新を実行するストアド プロシージャがある場合は、次のようなものを実装できます。
CREATE OR REPLACE TRIGGER trg_ins_upd_A
AFTER INSERT OR UPDATE ON A
FOR EACH ROW
DECLARE
-- required declarations
BEGIN
IF INSERTING THEN
my_procedure_one (...);
END IF;
IF UPDATING THEN
my_procedure_two (...);
END IF;
END;
于 2013-10-03T09:03:35.070 に答える
1
4 番目のテーブルのデータを作成するためのクエリの複雑さによっては、オンコミットの高速更新マテリアライズド ビューを使用して実装する方が適切な場合があります (より堅牢で、柔軟性が高く、コードが少ない)。
http://docs.oracle.com/cd/B28359_01/server.111/b28326/repmview.htm
于 2013-10-03T09:24:26.280 に答える