【问题标题】:Mysql triggers : OLD and NEW as a string/xml/parameter?Mysql 触发器:OLD 和 NEW 作为字符串/xml/参数?
【发布时间】:2011-06-01 02:53:10
【问题描述】:

我想将所有更改存储到我的表中(在 MySQL 中)。我创建了一个表“审计”来跟踪一个表中所有表的所有更改(因此我不必为每个表创建审计表)。

然后,我为每个表创建了触发器,并创建了一个将记录插入审计表的存储过程。存储过程的参数是表名和主 ID。现在我可以跟踪数据库中每条记录的插入/更新/删除日期。

但我也想用这个过程跟踪对 DATA 的所有更改。为此,我必须找到一种方法来使用存储过程中触发器中的 OLD 和 NEW 记录。

有人知道怎么做吗? 也许某种将记录 OLD 和 NEW 序列化为字符串??

【问题讨论】:

  • 你不能像常规参数一样将相应的值传递给过程吗?
  • 我可以,但是我必须为我的所有表编写不同的存储过程,并且有些表有超过 50 列。由于我只使用 1 个表进行审计日志记录,我认为如果我可以将 OLD 和 NEW 作为参数传递会很好......但据我所知,这是不可能的......

标签: mysql stored-procedures triggers


【解决方案1】:

我能得出的唯一解决方案是检查表中每个字段的旧值和新值。

BEGIN

-- record changes to table log_new

IF OLD.fieldA != NEW.fieldA
OR OLD.fieldB != NEW.fieldB
THEN

INSERT INTO log_new (

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-15
    • 2016-03-21
    • 2021-04-27
    • 2018-12-19
    • 2018-11-30
    • 1970-01-01
    • 2020-11-10
    • 2013-01-07
    相关资源
    最近更新 更多