valor una tabla por modificar eliminar ejemplo defecto crear con como columna campo agregar sql timestamp insert-update

una - SQL-Diseño de tabla-columnas DateCreated y DateUpdated



eliminar columna sql (5)

¿Con qué frecuencia deberá incluir las marcas de tiempo creadas / actualizadas en su capa de presentación? Si la respuesta es algo más que "de vez en cuando", creo que sería mejor si tuviera esas columnas en cada tabla.

Para mi aplicación hay varias clases de entidad, Usuario, Cliente, Publicación, etc.

Estoy a punto de diseñar la base de datos y quiero almacenar la fecha en que las entidades fueron creadas y actualizadas. Aqui es donde se pone complicado. Claro que una opción es agregar columnas created_timestamp y update_timestamp para cada una de las tablas de entidades, pero ¿eso no es ese redudant?

Otra posibilidad podría ser crear una tabla de registro que almacene esta información, y podría contener un seguimiento de las actualizaciones de cualquier entidad.

¿Alguna idea? Me inclino por implementar esto último.


El enfoque single-log-table-for-all-tables tiene dos problemas principales que se me ocurren:

  1. El diseño de la tabla de registro (probablemente) limitará el diseño de todas las demás tablas. Lo más probable es que la tabla de registro tenga una columna llamada TableName y luego otra columna llamada PKValue (que almacenaría el valor de la clave primaria para el registro que está registrando). Si algunas de sus tablas tienen claves primarias compuestas (es decir, más de una columna), entonces el diseño de su tabla de registro debería dar cuenta de esto (probablemente al tener columnas como PKValue1, PKValue2, etc.).
  2. Si se trata de una aplicación web de algún tipo, la identidad del usuario que estaría disponible desde un desencadenador sería la cuenta de la aplicación, en lugar de la ID del usuario de la aplicación web (que probablemente sea lo que realmente desea almacenar en su CreatedBy campo). Esto solo lo ayudaría a distinguir entre los registros creados por el código de su aplicación web y los registros creados de otra manera.

Las columnas CreatedDate y ModifiedDate no son redundantes solo porque están definidas en cada tabla. Me quedaría con ese enfoque y pondré los activadores de inserción y actualización en cada tabla para poblar esas columnas. Si también tuviera que registrar al usuario final que realizó el cambio, omitiría los factores desencadenantes y llenaría la marca de tiempo y los campos de usuario de mi código de aplicación.


En un proyecto en el que trabajé hace un par de años, implementamos activadores que actualizaban lo que llamamos una tabla de auditoría (almacenaba información básica sobre los cambios que se estaban realizando, una tabla de auditoría por tabla). Esto incluyó la fecha de modificación (y la última modificación).

Solo se aplicaron a tablas clave (no combinaciones o tablas de datos de referencia).

Esto eliminó una gran parte de la frustración normal de tener que dar cuenta de los campos LastCreated y LastModified, pero introdujo la molestia de mantener los activadores actualizados.

Al final, el diseño de la tabla de activación / auditoría funcionó bien y lo único que tuvimos que recordar fue eliminar y volver a aplicar los activadores antes de ETL (!).


Es para un CMS basado en web en el que trabajo. La creación y las últimas fechas actualizadas se mostrarán en la mayoría de las páginas y habrá listas para las últimas páginas creadas (y actualizadas). La interfaz de administrador también usará esta información.


Hago lo último, con una tabla de "registro" o "eventos". En mi experiencia, la marca de tiempo "actualizada" se vuelve frustrante bastante rápido, porque muchas veces te encuentras en una situación donde no solo quieres la última hora de actualización.