SQL Spaltenname eine Änderung zur Anzeige
-
03-07-2019 - |
Frage
ich nicht wirklich wusste, wie der Titel zu formulieren. Aber das ist mein Problem. Wir verwenden SqlCacheDependencies Cache-Objekte zu aktualisieren aus. Aber die Abfrage dahinter ist „kompliziert“, dass wir es etwas leichter machen möchten.
Unser erster Gedanke war ein Feldname wie DateChanged hinzuzufügen und die DateChanged verwenden um zu überprüfen, ob ein Objekt anstatt tatsächlich geändert hat alle Spalten einer Tabelle geladen werden.
SELECT DateChanged FROM Table1
anstelle von
SELECT Id, Title, DateChanged, Description FROM Table1
Aber ich habe gehofft, jemand könnte mir sagen, ob es andere Möglichkeiten gibt, dies zu tun, oder wenn es Standards für die Spalte zu benennen, die eine Änderung anzeigt. Wie sind Frameworks wie "Entity Framework" oder "NHibernate" dies umgehen?
Andere Tipps
Dies sind die Spalten I auf "überprüfbare" Entitäten verwenden:
version: hibernate's optimistic concurrency control createdBy: FK to users modifiedBy: FK to users createdAt: timestamp modifiedAt: timestamp
Wenn Sie auf SQL Server beachten Sie eine Timestamp-Spalte ist etwas irreführend genannt. Während es verwendet werden kann, Änderungen an eine Spalte zu verfolgen, hat sein Wert nichts mit dem Datum oder Zeit zu tun. Es kann mehr in der Datenbank, nichts als ID uniqiue gedacht werden. http://msdn.microsoft.com/en-us/library/aa260631. aspx
Um zu wissen, ob ein Wechsel zwei timstamps müssen gefunden hat, wie in cherouvim Antwort. Man wird gesetzt, wenn ein Objekt erstellt wird, die andere auf einer Änderung, wahrscheinlich über Update-Trigger. Wenn sie sich unterscheiden, dann hat das Objekt editiert, aber man kann nicht genau sagen, wann.
Auf SQL Server haben Sie das gleiche Muster verwenden, aber mit Datums-Werten. Anschließend können Sie das Datum der Zeile berechnen, indem das Erstellungsdatum vom mod Datum subtrahiert wird.