代码之家  ›  专栏  ›  技术社区  ›  Kostas Konstantinidis

向MSSQL表添加自动版本信息的最简单方法是什么?

  •  0
  • Kostas Konstantinidis  · 技术社区  · 15 年前

    信息应该是2个日期时间列(插入/更新),具有ms精度,并且当有人插入或更新行时,服务器应该自动更新信息。

    2 回复  |  直到 15 年前
        1
  •  1
  •   MrTelly    15 年前

    向表中添加列

    ALTER TABLE yourTable ADD
        Inserted datetime NULL,
        Updated datetime NULL
    GO
    

    创建更新并插入触发器以更新列

    CREATE TRIGGER yourTableInsertTrigger 
       ON  yourTable
       AFTER INSERT
    AS 
    BEGIN
        Update yourTable Set Inserted = getdate()
        from Inserted 
        Where yourTable.Key = Inserted.Key
    END
    GO
    
    
    CREATE TRIGGER yourTableUpdateTrigger 
       ON  yourTable
       AFTER UPDATE AS 
    BEGIN
        Update yourTable Set Updated = getdate()
        from Updated
        Where yourTable.Key = Updated.Key
    END
    GO
    

    现在,如果您想真正做到干净,就要确保这两列不能通过使用视图而不是直接表访问来更改/更新,以便其他人访问数据。另外,如果主键不一致,并且有许多表,我建议您使用代码生成来创建SQL。 MyGeneration 会很好的。

        2
  •  0
  •   Stephen    15 年前

    我认为插入的触发器已经过时了。只需将getDate()作为默认值而不是空值添加到插入的列中。