【问题标题】:Can we pass parameters in triggers in Oracle?我们可以在 Oracle 的触发器中传递参数吗?
【发布时间】:2016-05-26 00:54:13
【问题描述】:

像过程和函数一样,我们可以将参数传递给触发器吗?可以显式调用触发器吗?

【问题讨论】:

  • 查看此链接了解更多信息stackoverflow.com/questions/8494421/…
  • 你能用简单的例子解释一下吗?与 java @Moudiz 无关
  • 您可以将变量存储在数据库的一个表中,如果发生事件,您可以通过触发器内部的查询传递数据。

标签: oracle plsql triggers


【解决方案1】:

基于对象的触发器由数据库特定对象上的事件发生(如更新、插入、选择)引发。还有系统触发器,由系统特定事件(如关机、启动数据库、用户连接等)触发。

这是数据库中触发器的主要目的,你不能显式地引发它,如果你想让它运行唯一的方法就是引发事件。传递参数也不是触发器定义的一部分,但您可以处理事件属性(可以将其传递给可能包含函数或过程的触发器主体)。

我希望我已经回答了你的问题,我能知道你有什么需要尝试这样做吗?

【讨论】:

  • 这是一道考试题,你想作弊吗? :P
  • A) 是的,他们可以,我们谈论的是嵌套触发器。 B)他们不能。 C)没错,他们不能接受参数,但可以操作和传递属性到函数或过程。 D) 对。当触发器(包含每个行语句)在变异表(正在修改的表)上触发时,会引发错误以防止触发器看到不一致的数据。
【解决方案2】:

您可以做的是创建一个表来临时存储您要在触发器中访问的数据。

1-例如创建一个表“tmp_data”。 2-在运行将触发触发器的事件(存储过程、插入、更新...)之前,将要在触发器中使用的数据插入到 tmp_data 中。 3-在触发器中,要访问您需要的数据,您对表 tmp_data 进行查询。 4-处理完数据后,清理表 tmp_data 以备下次使用。

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2015-09-23
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多