Desde un SP yo uso una DLL que proporciona una función (UDF) que permite almacenar en un archivo de texto un mensaje. Como la DLL se encuentra en el servidor, el archivo será creado ahí. Es una herramienta interesante que uso para depurar el código y también para almacenar logs según se van ejecutando órdenes dentro de un SP.
La forma de usarla es simple:
Código SQL
[-]
SELECT DEBUGGER('Este es un mensaje generado el ' || CAST(CAST('NOW' AS TIMESTAMP) AS VARCHAR(24)), 'D:\Logs\Log0001.log', '1')
FROM RDB$DATABASE INTO ebuggerResult;
Esta sentencia creará el archivo Log0001.log en la ubicación D:\Logs en el servidor. Dentro de este archivo el mensaje: "Este en un mensaje generado el 2008-08-12 13:33:18.0000"
DEBUGGER es una UDF previamente declarada en la base de datos así:
Código SQL
[-]DECLARE EXTERNAL FUNCTION DEBUGGER
CSTRING(255), CSTRING(255), CSTRING(2)
RETURNS INTEGER BY VALUE
ENTRY_POINT 'debugger' MODULE_NAME 'ibdebug';
y la DLL
ibdebug puedes construirla tu mismo usando Delphi, lenguaje C, u otro lenguaje.
Como se trata de una sentencia SQL normal que usa una función definida por el usuario puedes usarla dentro de tu TRIGGER.