Oracle 11g - 是否可以确定函数/过程中的更新或插入?

Oracle 11g - Is it possible to determine update or insert in a function / procedure?

我正在使用 Oracle 11g,我有一个问题。

我想做的是:

即DDL喜欢跟随。它几乎相同,但是 pk.

create table Tbl_A (
  a_pk number constraints pk_tbl_a primary key
  , b_pk number
  , some_text varchar2(10)
  , created date
  , changed date
);

create table Tbl_B (
  a_pk number
  , b_pk number constraints pk_tbl_b primary key
  , some_text varchar2(10)
  , created date
  , changed date
);

我想要的伪装:

create or replace procedure mv_data
is 
begin
 case when [if Tbl_B has same b_pk] then [update statement] end
 else [create statement] end;
commit;
end;

感谢您的热心回答:D

您想使用 MERGE

一些参考资料:

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

http://psoug.org/reference/merge.html

作为 valentin 建议的 MERGE 解决方案的替代方案,您可以使用以下结构:

begin
    -- try the insert
   insert...
exception
  when dup_val_on_index 
  then
     update...
end;