【发布时间】:2019-05-21 13:59:10
【问题描述】:
我想创建一个自定义表,我应该在其中存储 VIEW 的最后更改日期和更改它的 SYSTEM_USER。
VIEW 的最后更新日期我可以使用这个查询来检索它:
SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'v'
ORDER BY 3 DESC
但是,上表没有保留有关更改视图的用户的信息。
有没有办法在 SQL 中做到这一点? INSTEAD OF triggers 不是解决方案。
【问题讨论】:
-
我的第一个建议是使用版本控制来管理您的数据库,然后您可以看到的不仅仅是谁更改了视图以及何时更改了视图。您可以看到更改是什么,并假设他们正确使用了该软件,为什么进行更改,它是什么功能的一部分等。如果这不可能,Aaron Betrand 在this article 中描述了一个使用数据库触发器的非常好的解决方案,虽然不确定这是否是您所说的“
INSTEAD OF触发器不是解决方案” -
@GarethD - 因为
INSTEAD OF可以与UPDATE、INSERT等一起使用,并且没有人会对此视图进行更新或插入。 -
您不会看到
INSTEAD OF触发器,因为它们与 DML 触发器有关。如果您需要存储此类信息,它将位于 DDL 触发器中。
标签: sql-server view