我希望我的表中有两列用于存储添加时间和更新时间。顾名思义,添加时间是一行首次添加的时间;更新时间是行更新的最后一次。我可以通过默认值GETDATE()
来执行。SQL Server中的自动更新时间
On Update: Auto Update Date/Time Field
- 有没有更简单的方法:对于第二个,@Jeremy这里使用触发器建议?
- 如果我实现了一个触发器,这是否意味着两个
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足够聪明,可以识别出我正在更新相同的记录并同时保存这两个更改?
你是否总是通过存储过程更新/插入?你可以得到这个插入时间。 – Ray 2012-01-04 14:44:08
不,我正在使用实体框架。 – Rafid 2012-01-04 14:44:53
我编辑了我的答案,为实体框架提供了一个选项。 – Ray 2012-01-04 15:02:06