将delta记录从视图插入表的最佳方法

时间:2017-12-05 01:46:58

标签: sql hana

我有一个要求,我每天从视图到表格加载。在初始加载之后,可能存在从视图的源表中删除原始记录的情况。还有一些情况会更新这些记录。

运行存储过程时,加载的表应该拾取增量记录。这意味着只有新的插入物。此外,它应将删除的行标记为D.除此之外,源数据中的任何更新也必须在此表中更新并标记为U. 请参阅附图中的情况,如图1所示,2插入初始加载,然后更新,然后删除。 左侧表示视图,右侧表示我尝试加载的表。 Click for attached image 谢谢!

希亚姆

1 个答案:

答案 0 :(得分:0)

如果您更喜欢在HANA数据库表上使用触发器,则可以在列表上使用以下示例,如果您正在使用行表,则可以选择基于语句的方法

create trigger Salary_A_DEL after DELETE on Salary
REFERENCING OLD ROW myoldrow
FOR EACH ROW
begin

INSERT INTO SalaryLog (
    Employee,
    Salary,
    Operation,
    DateTime
) VALUES (
    :myoldrow.Employee, 
    :myoldrow.Salary,
    'D',
    CURRENT_DATE
);

end;



create trigger Salary_A_UPD after UPDATE on Salary
REFERENCING NEW ROW mynewrow, OLD ROW myoldrow
FOR EACH ROW
begin

INSERT INTO SalaryLog (
    Employee,
    Salary,
    Operation,
    DateTime
) VALUES (
    :mynewrow.Employee, 
    :mynewrow.Salary,
    'U',
    CURRENT_DATE
);

end;



create trigger Salary_A_INS after INSERT on Salary
REFERENCING NEW ROW mynewrow
FOR EACH ROW
begin

INSERT INTO SalaryLog (
    Employee,
    Salary,
    Operation,
    DateTime
) VALUES (
    :mynewrow.Employee, 
    :mynewrow.Salary,
    'I',
    CURRENT_DATE
);

end;