是否可以将触发器中的新表和旧表传递到 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/