【问题标题】:How to show stored trigger in sql?如何在sql中显示存储的触发器?
【发布时间】:2019-09-14 19:35:13
【问题描述】:

我正在处理触发器,现在我想进行一些更改并查看代码,是否可以查看,如果可以,那么如何查看?触发器工作正常,plsql中是否有任何命令可以查看代码?我正在使用sql命令行

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    user_triggers(或all_triggers)有触发源代码。同样user_source(或all_source)还有其他源代码。

    尽管我遵循的一般规则是始终始终有一个文件结构来保存源代码。 100% 的规则是团队中的任何人都不允许违反。然后我查看创建触发器的行为相当于传统编程中的“编译”。例如,在该模型中,您将拥有一个目录树

    <project>/src
    <project>/src/plsql
    <project>/src/plsql/<folder for each package>/<files>
    <project>/src/plsql/<folder for each table>/<triggers>
    

    然后“修改”只是在这里更改它们并再次“编译”(编译将意味着通过 sqlplus 运行这些 - 或者更好地创建一个 shell 脚本。

    在此模型中,您还可以轻松整合多个可用的版本控制工具。

    【讨论】:

      【解决方案2】:

      GUI 会显示得更漂亮,但 SQL*Plus 也可以。这是一个例子:

      创建示例触发器:

      SQL> create or replace trigger trg_update_percentage
        2    after update or insert on item
        3    for each row
        4  begin
        5    insert into students_percentage (sid, total_per)
        6      select sid, total from student_report
        7      where sid = :new.sid;
        8  end;
        9  /
      
      Trigger created.
      

      USER_TRIGGERS获取它的描述;由于正文存储在LONG 数据类型列中,因此应使用set long(否则您将看不到完整的代码)。

      SQL> set long 4000
      SQL> select trigger_name, trigger_type, triggering_event, table_name, trigger_body
        2  from user_Triggers where trigger_name = upper('trg_update_percentage');
      
      TRIGGER_NAME              TRIGGER_TYPE         TRIGGERING_EVENT     TABLE_NAME
      ------------------------- -------------------- -------------------- ----------
      TRIGGER_BODY
      --------------------------------------------------------------------------------
      TRG_UPDATE_PERCENTAGE     AFTER EACH ROW       INSERT OR UPDATE     ITEM
      begin
        insert into students_percentage (sid, total_per)
          select sid, total from student_report
          where sid = :new.sid;
      end;
      
      
      SQL>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-07
        • 1970-01-01
        • 2016-09-19
        • 2013-01-22
        相关资源
        最近更新 更多