【发布时间】:2012-01-04 14:42:05
【问题描述】:
我想在我的表中有两列来存储添加时间和更新时间。顾名思义,添加时间是第一次添加行的时间;更新时间是最后一次更新行。我可以首先通过默认值GETDATE() 来实现。至于第二个,@Jeremy 建议在这里使用触发器:
On Update: Auto Update Date/Time Field
- 有没有更简单的方法?
- 如果我实现了一个触发器,这是否意味着必须执行两条
UPDATE语句(或一条INSERT和一条UPDATE,以防刚刚创建行)?
谢谢。
编辑:对于问题的第二部分,这是我数据库中的触发器:
CREATE TRIGGER [dbo].[TR_AddUpdateTime]
ON [dbo].[AddUpdateTime]
AFTER UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
UPDATE r
SET UpdateTime = GETDATE()
FROM AddUpdateTime r
JOIN inserted i
ON i.Id = r.Id
END
这是否意味着每当我对 AddUpdateTime 表进行更新时都会执行额外的更新语句,或者 MSSQL 足够聪明,可以识别我正在更新同一条记录并同时保存这两项更改?
【问题讨论】:
-
您是否总是通过存储过程更新/插入?你可以用它来插入时间。
-
不,我实际上使用的是实体框架。
-
我编辑了我的答案以获得实体框架的选项。
标签: sql-server tsql entity-framework auto-update