我们的客户希望在记录创建日期之前订购。在我看来,这似乎是一个系统变量,它是记录本身的某种元数据。
有没有一种方法可以告诉您何时创建了一条记录,而没有实际创建带有默认值GetDate()的datetime字段,并希望没有人修改它?
没有。
您需要为此提供一列。
想象一下,如果您需要为创建的每条记录保留一条记录,那么元数据将有多大!您是否还想将元数据保留在元数据上,以便知道元数据何时更新?空间使用会迅速升级。
SQL Server保留一些统计信息,但特定的某些信息需要来自用户定义的字段。
附带说明,如果使用查找表,则可能更难以篡改所创建字段上的日期。创建一个表“ TableName_CreateDate”,并使用实际表中的PK和日期值。您的日期位于单独的位置,不太可能被修改,但是您仍然可以JOIN在该位置上获取订单。您将需要创建一个触发器,以使用新值对此进行更新。
JOIN
如果只需要 DATE 而不需要datetime值,则可以更进一步,只需要一个日期表和一个连接到该表的查找表即可。IE:
Table->Table.PK + Date.Pk -> DateTable
如果您有很多行(我认为每行4个字节),这将节省大量驱动器空间。