簡體   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