关于我为表格创建的触发器,我有几个问题:
应根据对任何状态字段所做的更改将标志设置为true或false。 Java-Application将读取此标志,该值将把值推送到JIRA-REST-Service。
我做的方式相当冗长,是一个更大的触发器的一部分,所以这里有一些伪sql给你一个想法:
-- Part of code that works, Selection of table, setting var_push_flag to false, and other SQL
-- ...
-- BEGIN MY Part of Code
IF
:new.STATUS_SERVICE_1 <> :old.STATUS_SERVICE_1
or
:new.STATUS_SERVICE_2 <> :old.STATUS_SERVICE_2
or
....
or
:new.STATUS_SERVICE_N <> :old:STATUS_SERVICE_N
THEN
var_push_flag := 'true';
ELSE
var_push_flag := 'false';
END IF
-- END MY Part of Code
-- Part of the code that updates the table (works)
请忽略此表中的所有内容都是字符串的事实,因为:
我的问题是:
非常感谢你!
答案 0 :(得分:1)
除非您想阅读表格元数据和动态SQL,否则您所拥有的只是我所知道的唯一方式。
您的任何列都可以为空吗?如果是,:new.Foo <> :old.Foo
将评估为UNKNOWN
,而不是TRUE
。您还需要检查任何可为空的列的空值:
:new.Foo <> :old.Foo
OR :new.Foo IS NULL and :old.Foo IS NOT NULL
OR :new.Foo IS NOT NULL and :old.Foo IS NULL
(同时确保var_push_flag
确实实际上在以后使用。)