Nom de colonne SQL pour indiquer un changement
-
03-07-2019 - |
Question
Je ne savais pas vraiment comment formuler le titre. Mais c'est mon problème. Nous utilisons SqlCacheDependencies pour mettre à jour des objets de cache. Mais la requête derrière ceci est "compliquée" que nous aimerions le rendre un peu plus facile.
Notre première idée a été d'ajouter un nom de champ tel que DateChanged et d'utiliser DateChanged pour vérifier si un objet a réellement changé au lieu de charger toutes les colonnes d'une table.
SELECT DateChanged FROM Table1
au lieu de
SELECT Id, Title, DateChanged, Description FROM Table1
Mais j'espérais que quelqu'un pourrait me dire s'il existe d'autres moyens de le faire ou s'il existe des normes pour nommer la colonne indiquant un changement. En quoi les frameworks sont-ils comme "Entity Framework"? ou " NHibernate " gérer cela?
Autres conseils
Ce sont les colonnes que j'utilise dans " auditable " entités:
version: hibernate's optimistic concurrency control createdBy: FK to users modifiedBy: FK to users createdAt: timestamp modifiedAt: timestamp
Si vous êtes sur SQL Server, sachez qu’une colonne d’horodatage est nommée de manière trompeuse. Bien qu'il puisse être utilisé pour suivre les modifications apportées à une colonne, sa valeur n'a rien à voir avec la date ou l'heure. Cela peut être considéré comme une identité unique dans la base de données, rien de plus. http://msdn.microsoft.com/en-us/library/aa260631. aspx
Pour savoir si un changement a eu lieu, vous avez besoin de deux horodatages, comme dans la réponse de cherouvim. L'un est défini lorsqu'un objet est créé, l'autre lors de toute modification, probablement via le déclencheur de mise à jour. S'ils diffèrent, l'objet a été modifié, mais vous ne pouvez pas savoir exactement quand.
Sur SQL Server, vous devez utiliser le même modèle, mais avec des colonnes datetime. Vous pouvez ensuite calculer la date de la ligne en soustrayant la date de création de la date du mod.