FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Trigger auditoria
Hola a todos,
estoy intentando hacer un trigger que audite una serie de campos de varias tablas. Como no quiero estar poniendo el churro de campos de cada tabla, estoy intentando hacer un trigger genérico que me ayude al menos a reutilizar el código. El problema es que no consigo dar con el problema. He aquí el código maldito Pues eso, que me estoy haciendo la picha un lio. Debo decir que si hago un store proc. que me devuelva la variable SENTENCIA - que es la que se ejecuta después con el execute statement - y la copio en el ibexpert, me la ejecuta bien O sea, que estoy enrocado. Agradecería cualquier ayuda de los maestros. Gracias y un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#2
|
||||
|
||||
VAmos avanzando, ahora se compila bien. Observese que he aumentado el tamaño de la variable sentencia.
Pero a la hora de hacer un cambio en la tabla, me dice que no puede convertir a string un valor - no especifica cual - , pero que tiene que ser el propio valor del campo. Seguimos a la espera.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#3
|
||||
|
||||
Bueno,
parece que lo que quiero hacer es imposible. El ámbito de las variables old y new no sobrepasa más allá del propio trigger, por lo que es imposible que sean accedidas desde la sentencia 'execute statement'. Por lo tanto tendré que orientar la solución hacia otro lado Un new.saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#4
|
||||
|
||||
¿No sería más simple mantener una tabla donde se copiaran tal cual cada registro completo de las tablas que quieres auditar?
Por ejemplo, para la tabla "tbClientes" tendríamos "tbClientesAud", que sería igual que "tbClientes" pero sin restricción de campos nulos, valores por defecto, claves foráneas, etc. Y en los trigger después de grabar, actualizar y borrar de tbClientes se graban los datos en tbClientesAud, puedes añadir algún campo como el de fechahora de la grabación y otro para guardar si fue un borrado, update o insert. El Problema es que si son muchas tablas es un poco engorroso, no se parece en nada al "automatismo" que quieres hacer. Aquí hay algo que puede interesarte, échale un vistazo. A la espera de lo que nos traiga la versión 3 de Firebird, que promete bastante: * Monitoring * Asynchronous statement cancellation * Embedded users / SQL users management * More built-in functions * Temporary tables * SQL functions * Recursive queries * Faster outer joins * SMP support in SS * Compiled statements cache * External functions/procedures * Detailed logging/audit * SQL tracing/profilingUser permissions for metadata * Pluggable authentication modules * Security groups * Long exact numeric implementation * Domains everywhere * Regular expressions * TEXT BLOB compatible with [VAR]CHAR * Reliable logical backup * Optimizer improvements * Statement consistency/atomicy, read committed compliance * Optimized network protocol * Bi-directional indices * Referential integrity without indices * Bulk load/import * PSQL debugging extensions/hooks * Database encryption * More access paths * Full-text search * Clustering * Bi-directional cursors * XML integration
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
||||
|
||||
Gracias por tu opinión Casimiro, pero he descartado esa idea ( la de tablas 'clon' ) ya que son tropecientas tablas. Respecto a esperar nuevas funcionalidades de firebird, pues no creo que pueda esperar, es decir, seguiré para adelante.
Sí he visto un código ( que por cierto estoy buscando en la red ) que a lo más que llega es a generarte el trigger de manera automática en base a información que el usuario introduzca. Será ésta la solución que adopte, ya que me parece la más sencilla. Además, espero que los usuarios no cambien demasiado los campos que quieran auditar, dándoles ya unos triggers por defecto. Un old.saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#6
|
|||
|
|||
Cita:
|
#7
|
||||
|
||||
Sólo he visto la lista esa en su "roadmap", pero vienen comentarios, yo no los he encontrado
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
||||
|
||||
Cita:
Por otro lado, la variable para el nombre del campo tendría que ser Varchar(255) que creo que es el máximo de caracteres posible para nombres de tablas. Espero te sirva de algo. Saludos. |
#9
|
||||
|
||||
Muy interesante!, es una buena idea tal y como comentas que lo haces.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
||||
|
||||
Si les sirve les paso el trigger completo para controlar la auditoria.
|
#11
|
||||
|
||||
Si no es molestia ,estaría muy agradecido de ver cómo lo resuelves.
Por cierto, tienes algún generador de los scripts para generar las tablas de auditoría ?? Hace unos días lo tenía claro, pero ahora no tanto, y finalmente no sé lo que haré, de ahí que esté interesado. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#12
|
||||
|
||||
Pues claro, hombre, eso ni se pregunta
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#13
|
||||
|
||||
La verdad que no, porque ni bien creo la tabla la cual lleva una auditoría, le agrego los demás campos y creo la tabla de auditoría.
|
#14
|
||||
|
||||
Por ejemplo tengo esta tabla de Artículos
Hago la tabla de auditoria
El trigger, es un poco largo, pero funciona. Se puede mejorar pero no he tenido tiempo de hacerlo
Eso es todo. Espero les sirva. Saludos de Cañones PD: cualquier duda, preguntan nomas. No contesto de inmediato porque no me llegan las notificaciones. Última edición por Cañones fecha: 15-04-2010 a las 21:33:56. Razón: PD |
#15
|
||||
|
||||
Gracias !!!
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#16
|
||||
|
||||
Gracias por la información.
Intentaré preparar un Store Procedure o una función que me genere los triggers. No lo voy a hacer de forma inmediata, pero intentaré publicar el resultado. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#17
|
||||
|
||||
Hola,
despues de andar buscando por ahi, he encontrado este codigo que puede servir a alguien. No sé de dónde lo he sacado, para al menos mencionar a su autor. Se basa en la creación de dos triggers por tabla. Toda la información de auditoria de todas las tablas queda almacenada en la misma tabla. Es fácil hacer una función desde el programa delphi que muestre todos los cambios que ha sufrido un registro a lo largo de su vida. Cuando se modifican las tablas, hay que ejecutarlo para actualizar los triggers Espero que le sirva a alguien Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Sistema de Huellas (Pistas de auditoria) | Hagen | Firebird e Interbase | 3 | 29-03-2011 14:47:12 |
Trigger dinámico para Auditoría de Tablas | jwmoreira | Firebird e Interbase | 6 | 11-03-2010 23:53:07 |
Realizar auditoria de acciones de usuarios | mantrax | Seguridad | 3 | 19-10-2007 06:42:33 |
Un trigger que dispara un procedimiento que dispara un trigger... | sitrico | Firebird e Interbase | 5 | 04-06-2007 23:05:13 |
Triggers de auditoria en firebird 1.5 | robertoe | Firebird e Interbase | 1 | 04-01-2007 05:18:11 |
|