Oracle - Trigger PL SQL

 
Vista:
Imágen de perfil de Saulo

Trigger PL SQL

Publicado por Saulo (2 intervenciones) el 09/05/2022 20:26:48
Hola a todos. Soy programador .NET y estoy explorando / aprendiendo Oracle. Mi caso práctico es el siguiente:


En una aplicación .NET, en la cual ya tengo las credenciales de acceso etc.. Ya saco la IP, MAC, Id usuario etc etc etc... Bien. Lo que quiero hacer, cuando estoy en la BD de PL SQL quiero ejecutar un Trigger el cual quiero que inserte en mi tabla de bitácora (después de que se inserte / actualice / borre el SP cualquiera que este sea) en los campos: IDusuario, IP, MAC, Acción, Tabla y Fecha (en la tabla de bitácora)


Bien, pero no encuentro como pasar los parámetros a un Trigger ya que esa información viene de la interfaz. La pregunta en concreto es:

* ¿Se puede hacer un trigger que acepte parámetros de entrada / es posible hacer uno con parámetros de entrada como un SP?


Saludos y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gilman
Val: 117
Bronce
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Trigger PL SQL

Publicado por gilman (52 intervenciones) el 10/05/2022 08:06:36
No, no se puede, pero además no tendría sentido, sería lo mismo que indicar los campos en la tabla en la que has hecho una operación.

Lo que puedes hacer es usar la vista V$SESSION en combinación con la función SYS_CONTEXT
La vista devuelve información sobre la conexión, tal como la máquina, el usuario.... y SYS_CONTEXT ('USERENV', 'SID') devuelve el SID de la sesión para identificar la conexión en la vista, además la función se puede utilizar para obtener mas datos de que pueden ser de utilidad.
Ten en cuenta que la información recibida de la máquina es donde se está lanzando la conexión, no la máquina física del usuario, y si, por ejemplo se está abriendo la conexión desde un citrix, será la información del citrix y no de la máquina donde el usuario llama al citrix.

Otra opción, es crear un paquete con las variables necesarias, se informarán en el momento de la conexión, y permanecerán sin alterarse durante toda la conexión, así que los triggers podrán consultarlo. El problema con este método es que, si no trabajas permanentemente conectado, la información deberás introducirla en cada apertura de la conexión, y, por otro lado, la auditoría solo sería válida para las modificaciones hechas mediante la aplicación, mientras que el otro método será válido incluso si las modificaciones se hacen desde fuera de la aplicación
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Saulo

Trigger PL SQL

Publicado por Saulo (2 intervenciones) el 10/05/2022 18:34:36
Gracias. Te soy sincero... Yo lo que hago es en lugar de usar un Trigger, es simplemente usar un SP y es todo. Ahora, no estoy diciendo que un trigger no sean útiles... Simplemente, por el momento no encuentro su utilidad. Lo que busco es aprender y si, en el camino... Habrá preguntas "tontas" porque la ignorancia es más grande que el conocimiento.

¿Tienes algún ejemplo para tratar de entender lo que pones textualmente?, es decir, ponerlo en código PL SQL. Gracias y saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar