如何在SAP HANA触发器中更新同一个表

时间:2018-02-07 03:46:48

标签: sql triggers sap hana

我正在尝试在SAP HANA中编写一个触发器,以便在将新记录插入该表时更新表的字段。以下是我编写的示例触发器。

CREATE TRIGGER SAMPLE
AFTER INSERT ON TARGET_TABLE
REFERENCING NEW ROW NEW_ROW
FOR EACH ROW
BEGIN
    UPDATE TARGET_TABLE SET VALID_FROM='2018-02-01' WHERE ITEM=:NEW_ROW.ITEM
END

当我尝试这个时,我收到错误Modification of subject table in trigger not allowed

有没有办法实现这个目标?

https://archive.sap.com/discussions/thread/3651854建议使用转换变量NEW_ROW,如果可以提供代码示例,请表示赞赏。

1 个答案:

答案 0 :(得分:1)

您实际上并不需要为您的要求创建触发器,因为我可以从您的帖子中看到(当然,如果它只是更新日期字段)

您可以使用DEFAULT值

定义VALID_FROM列

例如,

    Create Column Table DefaultColumnTable (
     Id int,
     Code varchar(5),
     VALID_FROM date default '2018-02-01'
    )

因此,每当插入新行时,除非声明了替代值,否则将使用上面的DDL命令中指定的默认日期填充valid_from列。

用户可以毫无问题地更改valid_from字段值

@Kalpa,也许你可以使用BEFORE INSERT Trigger 请查看以下示例

create trigger TriggerTable_B_INS BEFORE INSERT on TriggerTable
REFERENCING NEW ROW mynewrow
FOR EACH ROW
begin

declare lv_d date;
lv_d := '20180201';

mynewrow.VALID_FROM = :lv_d;

end;

在Insert命令在目标表上执行之前,只设置新行列。 您没有显式执行INSERT命令,只需为新行列设置新值。这就是全部

我希望它有所帮助