当触发器内部时,是否可能循环遍历所有列名?
场景: 记录已修改的表中的所有列。 如果某些值没有更改,则不要记录这些值。
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中的所有列。
OLD["col_name"]
这样做些什么,我认为在MYSQL中不可能实现。 - dlopezgonzalez