我有两个示例表:
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列。表1中的行与第一列(ID)一起引用。
我写了以下代码:
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更改为“我的新值”,但没有任何反应。任何人都可以指出我在这里做错了什么?
我想触发器代码中的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;
否则,我在创建触发器时会出现语法错误您可以验证吗?
菜鸟错了。我希望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;
它工作了!