繁体   English   中英

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

[英]How to update the same table in SAP HANA Triggers

我正在尝试在 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 ,如果可以提供代码示例,不胜感激。

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

您可以使用 DEFAULT 值定义 VALID_FROM 列

例如,

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

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

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

@Kalpa,也许您可​​以使用 BEFORE INSERT 触发器 请检查以下示例

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 命令,只需为新行列设置新值。 就这样

我希望它有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM