数据类型,自动存储上次完成的事务的DateTime,SQL Server 2008

时间:2013-05-27 12:40:28

标签: sql sql-server-2008

我需要向现有表添加新列,以便无论何时添加新行或编辑现有行,此列都将填充事务的确切日期和时间。我尝试使用TimeStamp,但显然TimeStamp与日期时间无关

  

它只是一个连续数字的二进制表示 - 它唯一有利于确保一行在读取后没有变化。 (引自How to convert SQL Server's timestamp column to datetime format

非常感谢任何帮助

3 个答案:

答案 0 :(得分:1)

听起来你需要创建一个触发器来填充/更新这个新列。请参阅以下内容:How to: Create trigger for auto update modified date with SQL Server 2008

答案 1 :(得分:0)

您必须在INSERTUPDATE上为表创建触发器,并在触发器中使用

UPDATE myTable 
SET myColumn = GETDATE()

你的触发器应该看起来像

CREATE TRIGGER trigger_updateTimestamp
ON myTable
AFTER INSERT, UPDATE
AS
    UPDATE myTable
    SET myColumn = GETDATE()
    WHERE ID = 'xyz'

答案 2 :(得分:0)

ALTER TABLE myTable ADD CONSTRAINT [DF_myTable_myColumn] DEFAULT (getdate()) FOR [myColumn]
GO

...一个好的做法是为编辑日期添加一个额外的列,并使用触发器进行更新

CREATE TRIGGER trigger_updateMyTable
ON myTable
AFTER UPDATE
AS
IF EXISTS (SELECT * FROM INSERTED)
BEGIN
    IF ΝΟΤ EXISTS (SELECT * FROM DELETED)
    BEGIN
        UPDATE myTable 
        SET myEditColumn = GETDATE()
        WHERE ID IN (
            SELECT
                ID
            FROM INSERTED
        )
    END
END