1

我需要在现有表中添加一个新列,以便每当添加新行或编辑现有行时,该列将填充事务的确切日期和时间。我尝试使用 TimeStamp 但显然 TimeStamp 它与日期时间无关

它只是一个连续数字的二进制表示——它只有助于确保一行在被读取后没有改变。(引自如何将 SQL Server 的时间戳列转换为日期时间格式

非常感谢任何帮助

4

3 回答 3

1

听起来您需要创建一个触发器来填充/更新这个新列。请参阅以下内容:如何:使用 SQL Server 2008 为自动更新修改日期创建触发器

于 2013-05-27T12:46:53.847 回答
0

您必须在表上创建触发器,INSERT并且UPDATE在触发器中可以使用

UPDATE myTable 
SET myColumn = GETDATE()

你的触发器应该看起来像

CREATE TRIGGER trigger_updateTimestamp
ON myTable
AFTER INSERT, UPDATE
AS
    UPDATE myTable
    SET myColumn = GETDATE()
    WHERE ID = 'xyz'
于 2013-05-27T12:48:12.950 回答
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
于 2013-05-27T13:09:21.190 回答