【问题标题】:Conditional update on Hana Studio (SQL Script) triggerHana Studio(SQL 脚本)触发器的条件更新
【发布时间】:2019-02-17 06:00:39
【问题描述】:

我有两个示例表:

    TABLE1:
      ID    | COLUMN_B| COLUMN_C
   _________|_________|_________
       1    |    0    |    1
    ________|_________|_________
       2    |    0    |    1
    ________|_________|_________
       3    |    0    |    1


    TABLE2:
      ID    | COLUMN_E| COLUMN_F
    ________|_________|________
       1    |    Y    |    X
    ________|_________|_________
       2    |    Y    |    X
    ________|_________|_________
       3    |    Y    |    X

我想做的是使用 SQL 脚本在 Hana Studio 上编写一个触发器,以在表 1 中的 B 列更新为特定值(例如 100)时更新表 2 中的 E 列。 表 2 中的第一列 (ID) 引用了表 1 中的行。

我写了以下代码:

create trigger "UPDATE_TABLES"
    after update of "COLUMN_B" on "TABLE1"
    referencing new row as new, old row as old
    for each row 
begin
    update "TABLE2"
    set "COLUMN_E" = 'my new value'
    where :old."COLUMN_B" = '100' and "TABLE1"."ID" = :old."ID";
end;

当我将第 1 行的 TABLE1.COLUMN_B 设置为 100 时,我希望代码将第 1 行的 TABLE2.COLUMN_E 更改为“我的新值”,但没有任何反应。谁能指出我在这里做错了什么?

【问题讨论】:

    标签: sap hana sql-scripts hana-sql-script hana-studio


    【解决方案1】:

    我猜触发器代码中的 UPDATE 语句应该略有不同,如下所示

    create trigger "UPDATE_TABLES"
        after update of "COLUMN_B" on "TABLE1"
        referencing new row as new, old row as old
        for each row 
    begin
        update "TABLE2"
        set "COLUMN_E" = 'my new value'
        where :new."COLUMN_B" = '100' 
        and TABLE2.ID = :old."ID";
    end;
    

    否则,创建触发器时会出现语法错误 你能验证一下吗?

    【讨论】:

    • 你是绝对正确的。我只是在我的回答中将表 1 误认为表 2。
    【解决方案2】:

    菜鸟失误。我希望 column_e 值随着 column_b 值的变化而改变,但我实际上是在跟踪 column_b 中的旧值。更正为:

    create trigger "UPDATE_TABLES"
        after update of "COLUMN_B" on "TABLE1"
        referencing new row as new, old row as old
        for each row 
    begin
        update "TABLE2"
        set "COLUMN_E" = 'my new value'
        where :new."COLUMN_B" = '100' and "TABLE1"."ID" = :old."ID";
    end;
    

    它成功了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多