2013-07-29 55 views
1

我不知道是否有可能创建一个每次创建或更新记录时都有创建日期和更新日期的表。创建一个具有创建日期和更新日期的表(只读)

例如,当我向该表中插入一条记录时,创建的日期将在与更新日期相同的表中自动生成。

当我修改此记录时,创建日期不会更改,但更新日期将根据日期更改。

非常感谢

+2

触发器应当予以受理。 –

+0

最合适的选项是数据库中的触发器。 – Smaug

回答

4
CREATE TABLE dbo.foo 
(
    ID INT IDENTITY(1,1), 
    CreatedDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    UpdatedDate DATETIME NULL 
); 
GO 

CREATE TRIGGER dbo.foo_ForUpdate 
    ON dbo.foo 
    FOR UPDATE 
AS 
BEGIN 
    SET NOCOUNT ON; 

    UPDATE f SET UpdatedDate = CURRENT_TIMESTAMP 
    FROM dbo.foo AS f 
    INNER JOIN inserted AS i 
    ON f.ID = i.ID; 
END 
GO 
2

触发是最合适的选择。您可以按照以下步骤参照触发样本。

CREATE TRIGGER dbo.TableTriggerName 
ON dbo.TableName 
AFTER INSERT, UPDATE, DELETE 
AS 
BEGIN 
    SET NOCOUNT ON; 

    -- 
    -- Check if this is an INSERT, UPDATE or DELETE Action. 
    -- Set Action to Insert by default. 
    IF EXISTS(SELECT * FROM DELETED) 
    BEGIN 
    END 
    ELSE 
     IF NOT EXISTS(SELECT * FROM INSERTED) RETURN; -- Nothing updated or inserted. 

    ... 

    END 

Trigger Reference

+0

这显示了触发器的骨架是什么样的,但它忽略了实际的问题。显示如何更新受更新影响的行的基表中的值的逻辑在哪里? –