我想知道是否有可能在每次创建或更新记录时创建一个具有创建日期和更新日期的表。
例如,当我将一条记录插入到该表中时,创建的日期将在与更新日期相同的表中自动生成。
修改此记录时,创建日期不会更改,但更新日期将根据日期更改。
非常感谢
发布于 2013-07-29 16:59:05
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发布于 2013-07-29 16:55:43
可以将列的默认值设置为GetDate(),这将将创建日期设置为创建记录的时间。这将不适用于UpdatedDate,因为在创建记录时将使用默认值。对于此列,可以在更新触发器之后使用。下面是一个显示如何创建一个链接:http://www.sqlservercurry.com/2010/09/after-update-trigger-in-sql-server.html
发布于 2013-07-29 16:59:09
触发器是最合适的选择。您可以引用触发器示例,如下所示。
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触发参考
https://stackoverflow.com/questions/17929671
复制相似问题