Zac*_*ott 11 sql sql-server-2005
我们的客户希望按记录创建日期订购.对我来说,这似乎是一个系统变量,记录本身的某种元数据.
有没有办法告诉创建记录什么时候没有实际创建一个默认为GetDate()的日期时间字段,并希望没有人修改它?
JNK*_*JNK 16
不.
你需要有一个列.
想象一下,如果您需要为每个创建记录保留记录,那么元数据会有多大!您是否还希望在元数据上保留元数据,以便了解元数据何时更新?空间使用可以迅速升级.
SQL Server会保留一些统计信息,但这些特定信息需要来自用户定义的字段.
作为旁注,如果使用查找表,则可能会更难以篡改创建的字段上的日期.创建一个表"TableName_CreateDate"并使用实际表中的PK和日期值.您的日期位于一个单独的位置,不太可能被修改,但您仍然可以JOIN使用它来获取订单.您需要创建一个触发器以使用新值更新它.
如果你只想要DATE并且不需要日期时间值,你可以更进一步,只需要一个日期表和一个连接到它的查找表.即:
Table->Table.PK + Date.Pk -> DateTable
如果你有很多行(我认为每行4个字节),这将节省大量的驱动器空间.