Nome colonna SQL per indicare una modifica
-
03-07-2019 - |
Domanda
Non sapevo davvero come formulare il titolo. Ma questo è il mio problema Stiamo usando SqlCacheDependencies per aggiornare gli oggetti cache. Ma la domanda dietro questo è "complicata" che vorremmo renderlo un po 'più semplice.
Il nostro primo pensiero è stato quello di aggiungere un nome campo come DateChanged e utilizzare DateChanged per verificare se un oggetto è effettivamente cambiato anziché caricare tutte le colonne di una tabella.
SELECT DateChanged FROM Table1
invece di
SELECT Id, Title, DateChanged, Description FROM Table1
Ma speravo che qualcuno potesse dirmi se ci sono altri modi per farlo o se ci sono standard per nominare la colonna che indica un cambiamento. Come sono i framework come " Entity framework " oppure "NHibernate" gestire questo?
Altri suggerimenti
Queste sono le colonne che utilizzo su " verificabile " entità:
version: hibernate's optimistic concurrency control createdBy: FK to users modifiedBy: FK to users createdAt: timestamp modifiedAt: timestamp
Se sei su SQL Server, tieni presente che una colonna timestamp è in qualche modo fuorviante. Sebbene possa essere utilizzato per tenere traccia delle modifiche a una colonna, il suo valore non ha nulla a che fare con la data o l'ora. Può essere pensato come un ID unico nel database, niente di più. http://msdn.microsoft.com/en-us/library/aa260631. aspx
Per sapere se è avvenuta una modifica sono necessari due timestamp, come nella risposta di cherouvim. Uno viene impostato quando viene creato un oggetto, l'altro su qualsiasi modifica, probabilmente tramite il trigger di aggiornamento. Se differiscono, l'oggetto è stato modificato, ma non si può dire esattamente quando.
Su SQL Server devi usare lo stesso modello, ma con colonne datetime. Puoi quindi calcolare la data della riga sottraendo la data di creazione dalla data mod.