Czy można przechodzić między nazwami wszystkich kolumn, gdy znajduje się w wyzwalaczu?przechodzenie przez kolumny w wyzwalaczu mysql
Scenariusz: Aby zarejestrować wszystkie kolumny tabeli, które zostały zmodyfikowane. Jeśli niektóre wartości się nie zmieniły, nie rejestruj tych.
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 $$
Oto przykład kopii roboczej, w której muszę teraz przechodzić przez wszystkie kolumny dostępne w OLD lub NEW.
link tylko odpowiedzi są pomarszczone w przepełnieniu stosu. W przypadku, gdyby linki stały się nieważne, lepiej byłoby zamieścić stosowne punkty w tym poście. –
Nie jest również jasne, jak używać rozwiązania w tych linkach wewnątrz wyzwalacza (gdzie trzeba uzyskać dostęp do OLD i NOWEGO – adinas