如何在Firebird 2.5中创建脚本日志记录的过程?

时间:2016-05-31 11:16:52

标签: logging firebird firebird2.5

我需要从另一个过程调用logger过程('p_ADD_TO_LOG')来理解脚本的执行方式。

我的记录器看起来像:

create PROCEDURE p_ADD_TO_LOG (
 IN_MESSAGE Varchar(1024) NOT NULL DEFAULT 'EMPTY'
)

AS
BEGIN
 INSERT INTO tmp_logging (ID, mess)
 VALUES (gen_id(id_gen, 1), :IN_MESSAGE) ;
suspend;
END

问题在于,如果在执行过程中调用p_ADD_TO_LOG,则会发生错误或执行过程将不会提交,而IN_MESSAGE将不会写入tmp_logging表。

这似乎是因为这些程序是在同一个交易中执行的。

如何更改'p_ADD_TO_LOG',以便在未确认事务或调用过程中发生错误时写入日志?

1 个答案:

答案 0 :(得分:0)

我刚刚在pocedure中添加了IN AUTONOMOUS TRANSACTION DO

create PROCEDURE p_ADD_TO_LOG (
 IN_MESSAGE Varchar(1024) NOT NULL DEFAULT 'EMPTY'
)
AS
BEGIN
IN AUTONOMOUS TRANSACTION DO
 INSERT INTO tmp_logging (ID, mess)
 VALUES (gen_id(id_gen, 1), :IN_MESSAGE) ;
suspend;
END

它有效。