【问题标题】:Is there a way to find out what was updated with the update query?有没有办法找出更新查询更新了什么?
【发布时间】:2015-02-08 10:34:52
【问题描述】:

如果我有 3 列并且我的程序可以更新所有 3 列,我将有一个更新查询:

 Update table set col1 = @value1, col2 = @value2, col3 = @value3

除了将所有旧值存储到变量中,然后在提交更新后将它们与表中的值进行比较之外,还有什么可以找出发生了什么变化,也许什么没有发生变化?

【问题讨论】:

  • “找出”是什么意思?你想做什么?
  • 好吧,我正在尝试为我的程序创建一个日志,如果我有一个表格,它可以在包含客户信息的表上添加新/更新数据,如果用户插入新信息我'将其记录为“新数据”,如果他们更新了旧信息,我想将其记录为“更新数据”以及发生的变化,比如他们可能更改了客户的姓名或地址或电话号码等
  • @CodeCaster 目前我只是在表格中插入我需要的信息,比如用户登录的用户名、计算机名、本地 ip 等等
  • 然后您可以在@Manu 建议的触发器中执行此操作。让触发器在您的日志表中插入更改的数据。这是否可维护是另一个问题。

标签: mysql sql .net


【解决方案1】:

您可以使用触发器(之后或之前)并在其中执行您需要的操作。如果您在应用程序级别需要该数据,则除非存储旧值,否则这是行不通的。

【讨论】:

    【解决方案2】:

    您可以在更新时在主表上设置带有触发器的历史表,以便在更新之前将旧值插入历史表。

    【讨论】:

      猜你喜欢
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      相关资源
      最近更新 更多