我想我应该提到我正在尝试让 Entity Framework\SQL server 来做一些我习惯于从 Rails 进行的事情。我真的只是想知道为我在数据库中插入/更新的记录自动创建created_at和updated_at列值的“最佳”方法。
现在我已经连接到ObjectContext.SavingChanges事件并且一切运行良好。然而,在我编写并测试了我的代码之后,我意识到可能有更好或更快的方法来做到这一点。
最佳答案
一种方法是使用插入/更新触发器将created_at和updated_at列设置为当前时间。
插入触发器看起来像这样:
CREATE TRIGGER [dbo].[inserted_myTable] ON [dbo].[myTable] AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
UPDATE [dbo].[myTable] Set AdmitDateTime = GetDate() where pkid in (SELECT pkid FROM Inserted)
END
更新触发器看起来像这样:
CREATE TRIGGER [dbo].[updated_myTable] ON [dbo].[myTable] AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE [dbo].[myTable] Set AdmitDateTime = GetDate() where pkid in (SELECT pkid FROM Inserted)
END
触发方法的优点之一是时间/日期始终位于同一时区。另一个优点是,如果有人在应用程序外部修改数据库记录,字段仍然会更新。
关于sql-server - Sql Server( Entity Framework ): created_at , Updated_at 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/516517/