填充CreatedOn,ModifiedOn列

时间:2012-02-07 22:49:57

标签: wpf sql-server wcf

我正在使用SQL Server构建WCF服务,该服务将由WPF应用程序使用。我希望我的数据库表包含如下列: CreatedOn,CreatedBy,LastModifiedOn,LastModifiedBy

有没有办法自动创建这些,或者如果不是我可以创建它们,但是它可能以某种方式由SQL服务器填充它们的值吗?

由于

1 个答案:

答案 0 :(得分:1)

在这里做了几个假设 - CreatedBy / ModifiedBy将填充系统变量,例如SUSER_SNAME(),并且修改后的值应该反映最初创建的相同值。假设这个基表:

USE tempdb;
GO
CREATE TABLE dbo.foo(fooID INT PRIMARY KEY);
GO

进行以下修改:

ALTER TABLE dbo.foo ADD CreatedOn SMALLDATETIME 
    NOT NULL DEFAULT CURRENT_TIMESTAMP;

ALTER TABLE dbo.foo ADD CreatedBy NVARCHAR(32)
    NOT NULL DEFAULT SUSER_SNAME();

ALTER TABLE dbo.foo ADD ModifiedOn SMALLDATETIME 
    NOT NULL DEFAULT CURRENT_TIMESTAMP;

ALTER TABLE dbo.foo ADD ModifiedBy NVARCHAR(32)
    NOT NULL DEFAULT SUSER_SNAME();
GO

现在您只需要一个触发器来处理后续更新:

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

    IF EXISTS (SELECT 1 FROM deleted)
    BEGIN
        UPDATE f
            SET ModifiedOn = CURRENT_TIMESTAMP,
                ModifiedBy = SUSER_SNAME()
            FROM dbo.foo AS f
            INNER JOIN inserted AS i
            ON f.fooID = d.fooID;
    END
END
GO

如果您需要从应用程序传入用户名,那么WCF将不得不提供帮助。