sap - Hana Studio(SQL 脚本)触发器的条件更新
问题描述
我有两个示例表:
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 更改为“我的新值”,但没有任何反应。谁能指出我在这里做错了什么?
解决方案
我猜触发器代码中的 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;
否则,我在创建触发器时会出现语法错误,您能否验证一下?
推荐阅读
- jpos - jpos:是否可以在同一频道中为传入和传出消息设置不同的标头
- javascript - 呈现异步函数的正确方法是什么?
- android - 库打包如何在 android 中工作
- c# - 从 Nlog 配置中读取?
- go - 如何处理 Golang 中的动态接口类型?
- css - 如何在css中使网格高度与响应高度中的网格相同
- python-3.x - 使用 buildozer 构建 apk 文件时出现错误“没有名为 'virtualenv.__main__' 的模块;'virtualenv' 不是包”
- javascript - 仅在单击的函数内部而不是在 Type Script 代码的 UI 中更新可淘汰可观察值
- git - 是否可以避免使用 ansible git 模块更改 remote_url?
- python - 在 Python 中获取 Bing 搜索结果