我有一个包含Family ID, Name, Addr
列的表A.我怎样才能找到表中最近修改过的行?这可以在不添加表格中的任何列的情况下完成吗?
答案 0 :(得分:2)
不,SQL Server不会跟踪何时将行添加到表或已修改。您需要通过添加列来执行此操作:
ALTER TABLE dbo.A ADD RowAdded DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
当然,这会将所有现有行设置为现在,因此它仅适用于新行。如果您还想要修改时间,可以添加其他列:
ALTER TABLE dbo.A ADD RowChanged DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
并使用触发器保持最新状态:
CREATE TRIGGER dbo.A_modified
ON dbo.A
FOR UPDATE
AS
BEGIN
UPDATE A SET RowChanged = CURRENT_TIMESTAMP
FROM dbo.A as A INNER JOIN inserted AS i
ON A.ID = i.ID;
END
GO
答案 1 :(得分:0)
除非您还没有编写修改时间(或时间戳),否则无法找到这些行。
您还可以添加记录已修改ID的触发器,但这听起来不是更好的解决方案。
如果要查找由DML语句修改的数据,可以使用OUTPUT子句。
答案 2 :(得分:0)
最简单的方法是添加'lastUpdated`列。除此之外,没有真正简单的方法来实现这一目标。