Ist es möglich, alle innerhalb eines Triggers alle Spaltennamen durchlaufen?Schleife durch Spalten in Mysql-Trigger
Szenario: Um alle Spalten einer Tabelle zu protokollieren, die geändert wurden. Wenn sich einige Werte nicht geändert haben, protokollieren Sie diese nicht.
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 $$
Dies ist Arbeitskopie Beispiel, wo ich jetzt alle Spalten in OLD oder NEW durchlaufen müssen.
Link-Lockruf Nur die Antworten sind bei Stack Overflow verpönt. Es wäre besser, die relevanten Punkte in diesen Beitrag aufzunehmen, falls die Links ungültig werden. –
Es ist auch nicht klar, wie die Lösung in diesen Links innerhalb eines Triggers (wo Sie auf OLD und NEW zugreifen müssen) verwendet wird – adinas