我对触发器很陌生,所以很明显我在某处做错了什么。我正在制作一个报告表,它将从原始表中获取数据。为简单起见,假设有一张表,然后有一张报告表。
原始表(orig_tab)
CREATE TABLE orig_tab (
PK NUMBER(8) not null,
NAME VARCHAR2(20) ,
);
INSERT INTO orig_tab (PK, NAME) VALUES (1, 'AAA');
INSERT INTO orig_tab (PK, NAME) VALUES (2, 'BBB');
INSERT INTO orig_tab (PK, NAME) VALUES (3, 'CCC');
然后是报表(rep_tab)
CREATE TABLE rep_tab (
PK NUMBER(8) not null,
NAME VARCHAR2(20) ,
);
现在从用户界面,有人更改了记录 2 的值。显然,这应该被视为报表的插入(因为该记录不存在)。然后一段时间后,该值会更改,因此它是报表的更新案例。
问题:我怎样才能制作这种触发器?我认为这是一个合并语句案例。
这就是我所做的:
create or replace trigger vr_reporting_trigger
after update on orig_tab
for each row
begin
MERGE INTO rep_tab d
USING (SELECT pk FROM orig_tab) s
ON (d.pk = s.pk)
WHEN MATCHED THEN
UPDATE SET d.pk = s.pk,
d.name = s.name
WHEN NOT MATCHED THEN
INSERT (d.pk, d.name) VALUES (s.pk, s.name);
end vr_reporting_trigger;
有什么建议或建议可以帮助我弄清楚吗?谢谢。