是否有其他方法可以找出在运行时调用的所有触发器(.t)文件。r ?。我正在努力找出用于特定程序的正确触发文件。
请帮我解决这个问题
查看黑盒正在做什么最简单的方法是使用-clientlogging和-logentrytype 4GLTrace。
为内部过程、用户定义函数、持久用户界面触发器和命名事件(分别由RUN、FUNCTION、PUBLISH和SUBSCRIBE语句生成)的执行打开日志记录。它还记录类的实例化和使用,包括构造函数的执行(由NEW短语以及SUPER和THIS-OBJECT语句调用)、类中定义的方法的执行(包括使用SUPER系统引用调用的方法)、属性访问器方法的执行(通过访问类的属性调用)和析构函数的执行(通过执行DELETE OBJECT语句调用)。
如果您不能更改客户端启动参数,请使用LOG-MANAGER查找Stefan的答案。
如何看到。w触发器是为我的查询工作?
或者,您可以自己编写代码。写触发器在记录范围结束或事务结束时触发,以先到者为准。这可能会导致棘手的情况。我的建议不显示触发器程序文件名,只显示表名。
试题:
/*test.p*/
for each _file no-lock where _tbl-type = "T":
run write.p persistent _file-name.
end.
find first customer.
update name.
运行写操作。P表示数据库中的每个表。如果您连接了多个数据库,只需为每个连接的数据库重复for each。
on write of {1} do:
def var i as int.
i = 1.
do while program-name(i) <> ? with down col 10 overlay row 4:
display "{1}" program-name(i) format "x(35)".
i = i + 1.
end.
end.
结果不提供触发程序文件名,但提供表名。
┌────────────────────┐
│Name │
│────────────────────│
│Etienne ┌────────────────────────────────────────────┐
└────────│Customer WRITE-TRIGGER write.p │
│Customer /home/ebegin/p71715_test.ped │
│Customer adecomm/_runcode.p │
│Customer ExecuteRun adeedit/_proedit.p │
│Customer RunFile adeedit/_proedit.p │
│Customer USER-INTERFACE-TRIGGER adeedit/_pro│
│Customer adeedit/_proedit.p │
│Customer _edit.p │
另一种方法是使用PROFILER系统句柄。分析器提供处理时间和调用树信息。
如果您使用该软件,可以在PDSOE中集成分析器。