【发布时间】:2014-08-05 08:48:28
【问题描述】:
是否可以在触发器内循环遍历所有列名?
场景: 记录表中所有已修改的列。 如果某些值没有更改,请不要记录这些值。
DROP TRIGGER IF EXISTS t_before_update_test;
DELIMITER $$
CREATE TRIGGER t_before_update_test
BEFORE UPDATE ON test
FOR EACH ROW
BEGIN
-- Loop here for all columns, not just col1
IF OLD.col1 <> NEW.col1 THEN
INSERT INTO change_logs(
log_on, user_id,
table_name, colum_name,
old_data, new_data
) VALUES (
UNIX_TIMESTAMP(NOW()), '0',
'test', 'col1',
OLD.col1, NEW.col1
);
END IF;
-- process looping all columns
-- col1, col2, ... should be dynamic per loop
END $$
这是一个工作副本示例,我现在需要遍历 OLD 或 NEW 中的所有可用列。
【问题讨论】:
标签: mysql loops triggers calculated-columns