【发布时间】:2019-09-14 19:35:13
【问题描述】:
我正在处理触发器,现在我想进行一些更改并查看代码,是否可以查看,如果可以,那么如何查看?触发器工作正常,plsql中是否有任何命令可以查看代码?我正在使用sql命令行
【问题讨论】:
我正在处理触发器,现在我想进行一些更改并查看代码,是否可以查看,如果可以,那么如何查看?触发器工作正常,plsql中是否有任何命令可以查看代码?我正在使用sql命令行
【问题讨论】:
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 脚本。
在此模型中,您还可以轻松整合多个可用的版本控制工具。
【讨论】:
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>
【讨论】: