/ / OracleはINSERTの代わりにUPDATEをトリガする - oracle、plsql、triggers、oracle11g

INSERTの代わりにOracleトリガーUPDATE - oracle、plsql、triggers、oracle11g

挿入前にチェックして一致が見つかったかどうかを確認し、そうであれば新しい行を挿入するのではなく行情報を更新するOracleトリガーを作成する方法を見つけようとしています。

私は見た before insert。ブロック内の基準に基づいて挿入をキャンセルする方法はありますか?

私はまた、 instead of ビューを操作する必要があります。

これについて最善の方法は何ですか?

回答:

回答№1は4

INSERTではなくMERGEステートメントを使用します。


回答№2の場合は0

マージステートメントを使用します。

MERGE INTO <<your table>> t
USING (<<your list of records - can be the result of a SELECT >>)
ON ( <<join between table and list of records >>)
WHEN MATCHED THEN
UPDATE SET << the rows you want to set>>
WHEN NOT MATCHED THEN
INSERT (<<columns of table>>)
VALUES (<<value>>)

https://oracle-base.com/articles/9i/merge-statement