Fecha y Hora al insertar registros
#1
Escrito 04 septiembre 2009 - 12:28
Pienso que Interbase tienen bitacoras de update de los registros, pero el detalle es que no se como accesar a ellos.
Saludos..
Grx..
#2
Escrito 04 septiembre 2009 - 12:33
Hola buenas tardes, uso interbase 7, y tengo la necesidad de saber fecha y hora en que se agrego un registro , alguien saber si puedo saber como ver ese dato? La perdona que desarrollo el modulo no se tomo el tiempo de agregar un campo en donde guardaria este dato.
Saludos..
Grx..
Se me ocurre que puedes modificar la tabla y agregar un campo llamado FecUltAct, cuyo valor por default sea la hora y fecha actual. además podrías agregar un disparador que después de cada update modifique ese campo.
saludos,
#3
Escrito 04 septiembre 2009 - 12:37
Coincido con Poliburro, puedes modificar la tabla y agrarle dicho campo. En lo que no coincido con Poli, es en trigger... creo que debería un after insert .
Si necesitas ayuda en estos puntos, nos dices y ves como te vamos asesorando.
Saludos,
#4
Escrito 07 septiembre 2009 - 09:12
La parte que quiero saber es de los registros anteriore (o ya insertados), dado que tengo auditorias, y me piden que es de fecha y hora de resgistros insertados hace mas de 1 año....
saludos..
grx..
#5
Escrito 07 septiembre 2009 - 09:15
Muchas Gracias...
La parte que quiero saber es de los registros anteriore (o ya insertados), dado que tengo auditorias, y me piden que es de fecha y hora de resgistros insertados hace mas de 1 año....
saludos..
grx..
, Pues así si no, es imposible. ES bueno que a partir de ahora incluir esos campos en la BD para futuras auditorías .
Saludos.
#6
Escrito 08 septiembre 2009 - 09:32
En Firebird empleo una solución como las sugerida por Edgar. En todas mis tablas tengo este par de campos:
USUARIOMODIFICACION VARCHAR(31) NOT NULL
FECHAMODIFICACION TIMESTAMP NOT NULL
Y los lleno con un disparador Before Insert-Update como este:
CREATE TRIGGER TGBIUCONTRATOUSUARIOM FOR CONTRATO ACTIVE BEFORE INSERT OR UPDATE POSITION 0 AS BEGIN NEW.UsuarioModificacion = CURRENT_USER; NEW.FechaModificacion = CURRENT_TIMESTAMP; END
Para determinar la fecha de los registros que ya están en tu actual base de datos, creo que tendrás que consultar los campos que te indiquen algo al respecto, como algunos campos de tipo fecha y otros que guarden información que te dé una idea aproximada de cuándo ocurrió la alta de esos registros. El análisis será un tanto manual.
Espero haber ayudado.
Un saludo.
Al González.
#7
Escrito 08 septiembre 2009 - 09:50
Sin contar con registros de fechas difícil será determinar una auditoría. Cuanto mucho se podría llegar a cruzar información de tablas (sería extraño que al menos alguna tabla no tuviera un campo con fechas). De todas formas el proceso será bastante manual.
La última opción, es irse por lo rudimentario: revisar toda documentación en papel que tengas y la que pueda rastrearse las fechas de los ejercicios.
Al, inicialmente estaba por preguntarte si es deseable que el campo USUARIOMODIFICACION sea de tipo VARCHAR. Luego leí el trigger y me percaté de la variable CURRENT_USER... Por poco y me como un chascarillo .
Yo venía elaborando la idea de que el campo debe ser numérico, siendo clave foránea hacia la clave primaria de una hipotética tabla USUARIOS.
Saludos,
#8
Escrito 08 septiembre 2009 - 10:21
CREADO_FECHA TIMESTAMP DEFAULT CURRENT_TIMESTAMP, CREADO_POR VARCHAR(64) DEFAULT CURRENT_USER, MODIFICADO_FECHA TIMESTAMP, MODIFICADO_POR VARCHAR(64), ....
En el caso de los dos primeros campos (CREADO_FECHA y CREADO_POR) no necesitarían triggers (disparadores) pues automáticamente obtienen su valor cuando se crea el registro. Los otro dos sí. Pero asignarles el valor a los campos con los disparadores puede tener sus ciertas ventajas.
saludos.
#9
Escrito 08 septiembre 2009 - 02:36
gracias por su apoyo y su valioso tiempo.. espero en poco yo poder ayudarlos a resolver su dudas...