mysql - 是否可以将新表和旧表从触发器传递到 MySQL 中的过程中?

标签 mysql triggers

是否可以将触发器中的新表和旧表传递到 MySQL 中的过程中? 我怀疑不,因为没有过程接受的表这样的数据类型。 任何可能的解决方法?

理想情况下它应该是这样的:

CREATE TRIGGER Product_log AFTER UPDATE ON Product
  FOR EACH ROW BEGIN
    call logChanges(OLD, NEW);
  END;

最佳答案

您可以显式传递每个字段:

CALL logChanges(OLD.colA, OLD.colB, NEW.colA, NEW.colB);

或者如果 logChanges 必须足够通用以处理来自不同表的此类调用,则可以使用合适的分隔符(例如 unit separator )将字段值连接成单个字符串:

CALL logChanges(CONCAT_WS(CHAR(31), OLD.colA, old.colB),
                CONCAT_WS(CHAR(31), NEW.colA, NEW.colB));

或者如果必须保留数据类型,可以将记录插入到 logChanges 从中读取的临时文件中。

关于mysql - 是否可以将新表和旧表从触发器传递到 MySQL 中的过程中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10885165/

相关文章:

Mysql2::错误:此连接正在被使用

mysql - 如何从 MySQL 表中拆分 XML 值?

android - 带触发器的平台

PostgreSQL - 确定更新了哪些列

wpf - 触发器不想工作。然而,它在风格上确实很有效

javascript - 在将数据插入数据库之前验证数据

Postgresql 更新触发器不接受 When/OF 条件

php - 计算数据表/数据库中某些输入的出现次数

php - 将 php 数组值用于带有内爆函数的 mysql 插入查询

python - 使用 MySQLdb 从 Python 中的 MySQL 存储过程获取返回值