【问题标题】:get updated field name and value in trigger在触发器中获取更新的字段名称和值
【发布时间】:2017-01-10 10:42:59
【问题描述】:

我有一张名为 product 的表

product_id    rate      Quantity    modified_fields
    1          100         4
    3          32          2
    5          43          1 

所以如果我要更新产品表中的任何字段

假设我将 rate 100 更改为 50,那么我需要设置一个触发器,该触发器将使用 rate:50(新值)更新 modified_fields 列

 product_id       rate      Quantity    modified_fields
        1          50          4         rate:50
        3          32          2
        5          43          1 

编辑:我基本上需要的是确定在更新操作中编辑了哪个特定列。表可以有 50 列,其中任何一列都可以更新。触发器基本会判断更新哪一列,以及对应的新值。然后它将使用 update column name : new value

更新修改后的字段列

任何帮助将不胜感激

【问题讨论】:

  • 您需要查询触发器吗?
  • 然后提供查询
  • 你可以直接写简单查询为 UPDATE product set rate = 50, modified_fields = CONCAT('rate',':',50) 对于同一张表,如果是其他表则触发罚款,但是对于同一张桌子,你可以使用这个
  • @VforVendetta 我基本上需要的是确定在更新操作中编辑了哪个特定列。表可以有 50 列,其中任何一列都可以更新。触发器基本会判断更新哪一列,以及对应的新值。然后它将使用更新列名称更新修改后的字段列:新值

标签: mysql triggers


【解决方案1】:

你可以得到link1link2的引用。

或者,你可以这样尝试,

UPDATE product set rate = 50, modified_fields = CONCAT('rate',':',50);

如果是同一张桌子。 在更新另一个表的列时应该使用触发器。

【讨论】:

  • 使用触发器更新后我们无法更新产品表
  • 一旦我在同一个表中的更新触发器之前使用它,它就起作用了
  • 更新后是否需要运行触发器?意味着我们不能在更新之前运行触发器吗?
  • 所以我们可以使用更新前触发器解决上述问题?如果是,那怎么办?
  • CREATE TRIGGER update_trig BEFORE UPDATE ON product FOR EACH BEGIN SET new.modified_fields= CONCAT('rate',':',rate) END ;
猜你喜欢
  • 2016-05-02
  • 2019-06-24
  • 2013-05-25
  • 2020-09-07
  • 2010-11-18
  • 2013-04-14
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
相关资源
最近更新 更多