我想写一个函数/存储过程,其中我想传递一个日期和时间,并获取特定日期和时间内存在的所有行,如果记录在该日期和时间之后被删除,它应该显示它们,否则不会。
假设我有一个有100行的表(id, name, createdate),今天上午10:30之前,我在今天上午10:30删除了30条记录,我用今天的日期和时间10:35运行我的函数,它应该返回70条记录,但是如果我用一个更早的日期运行函数,比如今天上午09:30的日期,它应该返回100条记录。
请在SQL Server中回复此问题的最佳解决方案。我不想创建一个单独的已删除项目表,然后与之进行比较和显示。
发布于 2018-02-12 04:38:00
DELETE将删除这些行,以后将无法查看这些行。
除非使用,否则您使用的是Sql Server 2016+,然后您可以使用System versioned temporal table。
您可以创建一个IsActive列或类似的东西,而不是DELETE您的UPDATE tbl SET IsActive = 0, dateInactivated = getdate() WHERE...
然后在您的存储过程中,您将:
SELECT *
FROM tbl
WHERE IsActive = 1
OR (IsActive = 0 AND dateInactivated > @myDate)(编辑原因:下面是有用的评论)
https://stackoverflow.com/questions/48736136
复制相似问题