HANA:SQL 触发设置行的最后修改日期?
HANA: SQL Trigger to set a row's last modified date?
所以,我了解如何在 HANA 中创建触发器,但是 HANA reference material 中的示例没有提到 Table A 上的触发器如何更新 Table A;相反,material 总是在 A 更新 B 时触发,如 SAP 文档中的以下示例:
CREATE TRIGGER TEST_TRIGGER_VAR_UPDATE
AFTER UPDATE ON TARGET
REFERENCING NEW ROW mynewrow, OLD ROW myoldrow
FOR EACH ROW
BEGIN
INSERT INTO SAMPLE_new VALUES(:mynewrow.a, :mynewrow.b);
INSERT INTO SAMPLE_old VALUES(:myoldrow.a, :myoldrow.b);
INSERT INTO SAMPLE VALUES(0, 'trigger');
END;
更新 LastModifiedDate 等列的首选方法是什么?我会设置 :mynewrow.LastModifiedDate = NOW()
,还是应该在 ID 与 mynewrow
的 ID 匹配的地方执行 UPDATE
?
从 SPS8 开始,HANA SQL 触发器只能针对 other[=17= 执行 INSERT
、UPDATE
和 DELETE
语句] 表。如果您尝试创建自引用触发器,您会发现以下错误消息:
Modification of subject table in trigger not allowed
所以,我了解如何在 HANA 中创建触发器,但是 HANA reference material 中的示例没有提到 Table A 上的触发器如何更新 Table A;相反,material 总是在 A 更新 B 时触发,如 SAP 文档中的以下示例:
CREATE TRIGGER TEST_TRIGGER_VAR_UPDATE
AFTER UPDATE ON TARGET
REFERENCING NEW ROW mynewrow, OLD ROW myoldrow
FOR EACH ROW
BEGIN
INSERT INTO SAMPLE_new VALUES(:mynewrow.a, :mynewrow.b);
INSERT INTO SAMPLE_old VALUES(:myoldrow.a, :myoldrow.b);
INSERT INTO SAMPLE VALUES(0, 'trigger');
END;
更新 LastModifiedDate 等列的首选方法是什么?我会设置 :mynewrow.LastModifiedDate = NOW()
,还是应该在 ID 与 mynewrow
的 ID 匹配的地方执行 UPDATE
?
从 SPS8 开始,HANA SQL 触发器只能针对 other[=17= 执行 INSERT
、UPDATE
和 DELETE
语句] 表。如果您尝试创建自引用触发器,您会发现以下错误消息:
Modification of subject table in trigger not allowed