尝试找到一种编写Oracle触发器的方法,该方法将在插入之前检查以查看是否在主列中找到匹配项,如果是,则更新行信息而不是插入新行。
我看过before insert
。有没有办法根据该块内的条件取消插入?
我还看过使用instead of
子句,但需要处理视图。
最好的方法是什么?
答案 0 :(得分:4)
使用MERGE语句而不是INSERT。
答案 1 :(得分: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>>)