【发布时间】:2019-07-29 23:29:10
【问题描述】:
在我问这个问题之前,是的,我已经完成了我的研究,是的,我已经尝试实施了几件最终对我不起作用的事情(请参阅我的上一篇文章)。所以基本上我正在尝试创建一个 LogTable 来记录对我的表所做的任何更新或修改。它将具有更改前的先前值和更改后的更新值以及时间戳和用户 ID。
我不太确定如何解决这个问题,因为我已经尝试过创建数据库触发器和 LogTable,但它并没有像我想象的那样工作。
我使用本教程来达到这一点,但本教程没有展示如何获取更新或获取以前的数据等。 https://jackworthen.com/2018/03/19/creating-a-log-table-to-track-changes-to-database-objects-in-sql-server/
感谢您提供的任何帮助, 谢谢。
【问题讨论】:
-
您要检测结构变化还是数据变化?
-
@RubensFarias 只是数据更改。结构将保持不变。
-
这有点奇怪。您提到数据库触发器,但您的整个解释是标准触发器。您是否考虑过使用变更数据捕获,这样您就不必在这里重新发明轮子?我认为您不想在审计表中捕获先前的值和当前值。只需记录以前的值,您的表存储量就是当前值的两倍。而且您始终可以轻松找到当前值。它在表中。
-
您链接到的教程是跟踪数据库对象的结构更改。它与针对数据的
CRUD操作完全无关。这不是在数据库级别完成的;它是在表级别完成的,@SeanLange 是正确的。如果您选择忽略 Change Data Capture, Change Tracking, 和 Temporal Tables,您可能会重新发明轮子。
标签: sql sql-server