用于指示更改的SQL列名称

时间:2009-03-03 07:53:32

标签: c# sql sqlcachedependency

我真的不知道如何制定标题。 但这是我的问题。 我们正在使用SqlCacheDependencies更新缓存对象。但是这背后的问题是“复杂的”,我们希望它更容易一些。

我们首先想到的是添加一个像DateChanged这样的字段名,并使用DateChanged检查一个对象是否实际已经改变,而不是加载一个表的所有列。

SELECT DateChanged FROM Table1

代替

SELECT Id, Title, DateChanged, Description FROM Table1

但是我希望有人可以告诉我是否有其他方法可以做到这一点,或者是否有标准用于命名指示更改的列。 像“实体框架”或“NHibernate”这样的框架如何处理这个问题?

3 个答案:

答案 0 :(得分:1)

它通常被称为“时间戳”

答案 1 :(得分:1)

这些是我在“可审核”实体上使用的列:

version: hibernate's optimistic concurrency control
createdBy: FK to users
modifiedBy: FK to users
createdAt: timestamp
modifiedAt: timestamp

答案 2 :(得分:0)

如果您在SQL Server上,请注意时间戳列有点误导性命名。虽然它可用于跟踪列的更改,但其值与日期或时间无关。它可以被认为是数据库中的ID uniqiue,仅此而已。 http://msdn.microsoft.com/en-us/library/aa260631.aspx

为了知道是否发生了变化,你需要两个timstamps,比如cherouvim的回答。一个是在创建对象时设置的,另一个是在任何修改时设置的,可能是通过更新触发器。如果它们不同,则对象已被编辑,但您无法准确判断何时。

在SQL Server上,您必须使用相同的模式,但使用datetime列。然后,您可以通过从修改日期减去创建日期来计算行的日期。