Microsoft SQL Server:任何方式来判断创建记录的时间?

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个字节),这将节省大量的驱动器空间.

  • 通过混淆来确保安全从来都不是一个好主意。如果您需要不为审计目的修改创建日期或保证您应该使用无权更新 createdate 字段的数据库用户,只创建它。 (3认同)

HLG*_*GEM 5

应添加创建日期字段。您可以通过在更新时添加一个不允许更新该字段的触发器来修复“希望没有人修改它”部分。