Nombre de columna SQL para indicar un cambio
-
03-07-2019 - |
Pregunta
Realmente no sabía cómo formular el título. Pero este es mi problema. Estamos usando SqlCacheDependencies para actualizar los objetos de caché. Pero la consulta detrás de esto es " complicada " que nos gustaría hacerlo un poco más fácil.
Nuestro primer pensamiento fue agregar un nombre de campo como DateChanged y usar DateChanged para verificar si un objeto realmente ha cambiado en lugar de cargar todas las columnas de una tabla.
SELECT DateChanged FROM Table1
en lugar de
SELECT Id, Title, DateChanged, Description FROM Table1
Pero esperaba que alguien pudiera decirme si hay otras formas de hacerlo o si existen normas para nombrar la columna que indica un cambio. ¿Cómo son los marcos como " Entity framework " o " NHibernate " manejar esto?
Otros consejos
Estas son las columnas que uso en " auditable " entidades:
version: hibernate's optimistic concurrency control createdBy: FK to users modifiedBy: FK to users createdAt: timestamp modifiedAt: timestamp
Si está en SQL Server, tenga en cuenta que una columna de marca de tiempo tiene un nombre un tanto engañoso. Si bien puede usarse para rastrear cambios en una columna, su valor no tiene nada que ver con la fecha o la hora. Puede pensarse como un ID único en la base de datos, nada más. http://msdn.microsoft.com/en-us/library/aa260631. aspx
Para saber si se ha producido un cambio, necesitas dos marcas de tiempo, como en la respuesta de cherouvim. Uno se establece cuando se crea un objeto, el otro en cualquier modificación, probablemente a través de un activador de actualización. Si difieren, el objeto se ha editado, pero no se puede saber exactamente cuándo.
En SQL Server tiene que usar el mismo patrón, pero con columnas de fecha y hora. Luego, puede calcular la fecha de la fila restando la fecha de creación de la fecha de modificación.