2011-12-19 62 views
1

好的。所以我知道如何创建一个触发器,以便在表A上执行操作时对表B进行更改,这非常简单,我很乐于这样做。我一直无法做的是创建一个包含if语句的触发器,以便在满足某些条件时执行。Oracle APEX - 如果数据库触发器中的语句

实施例:

表A &表B是相关的。表A包含有关当前处理中由唯一处理代码标识的文档的数据。表B包含有关由发布ID标识的最终和已发布文档的数据。表A和表B是相关的,因为文档可能会经历许多修订,因此它可能在表A中出现多次(唯一的处理代码但是相同的出版物ID),但仍只出现在表B中一次。无论文档经过多少次修改,文档生命周期中的出版ID都保持不变。

表A通过输入表格填写,人们提交他们希望我们处理的文档的请求。他们可以选择处理新文档,或者他们想要修改表B中已有的当前文档。这是通过无线电组(新建,修订等)完成的。如果选择'修订',则会出现一个选择列表框,填充表B的发布ID,用户可以选择要编辑的文档。

我需要做的是创建一个触发器或其他方法,当通过我们的输入表单提交请求时,请检查它是否用于表B中文档的修订并标记表B中的'状态'列改为'正在进行修订'。

因此,它需要有条件地调用或在触发器本身有某种if语句。如果在表A的输入表单上选择了“修订”,则将条件再次设置为“正在进行修订”。

谢谢!

回答

2

应该对表格中的正常行级触发器,

的伪代码应该是这样..

设立或更换表中的触发器的每一行..... :NEW.process_selected ='Revision' update b set status ='正在进行修订' 其中publication_id =:publication_id; end if; 结束;

-Sanjeev

1

自从我使用APEX已经很长时间了,但是不能将表单提交到pl/sql过程而不是直接到表中?然后编写一个程序,根据输入参数采取适当的操作。

+0

我必须将表格提交给表格。我只想让提交动作引发一个会有条件地改变另一个表中的值的触发器。 – Spags 2011-12-20 13:29:19