【问题标题】:SQL Procedure to return what column in what table has changedSQL过程返回哪个表中的哪个列发生了变化
【发布时间】:2012-04-07 16:52:33
【问题描述】:

我想记录对某些表所做的任何更改。即,如果创建了更新或删除的新记录,我希望将其记录在单独的表中。为了使它更干净和更好,我不会在 Java 代码中纠正逻辑,而是更喜欢某种存储过程,它取值,即当前登录的用户进行了更改,并获取已执行的操作类型在什么表和什么列上?

这可能吗?我用谷歌搜索了它,但什么也得不到?请问有什么想法吗?

【问题讨论】:

    标签: database tsql sql-server-2005 stored-procedures triggers


    【解决方案1】:

    您可以通过在表上实现触发器来实现。请参考这个CREATE TRIGGERUPDATE()

    这是理论:DML Triggers

    【讨论】:

      【解决方案2】:

      除了 Andrey 的回答之外,您还需要使用 INSERTED 和 DELETED 表来找出正在使用/更新的过去和新值是什么,并相应地记录它们。

      【讨论】:

        【解决方案3】:

        您应该搜索的短语是“审计”,并且有很多存储过程可以满足您的需求。它们由触发器提供支持,并根据操作将行写入另一个表。您可能需要修改它们以记录执行操作的用户。

        试试这样的:http://www.geekzilla.co.uk/ViewECBC0CC3-1C7E-4E7E-B243-F2F259A5C920.htm

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-23
          • 2023-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多