Có thể lặp qua tất cả các tên cột trong khi bên trong trình kích hoạt không?lặp qua các cột trong kích hoạt mysql
Kịch bản: Để ghi nhật ký tất cả các cột của bảng đã được sửa đổi. Nếu một số giá trị không thay đổi, không đăng nhập những giá trị đó.
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 $$
Đây là ví dụ về bản sao làm việc, bây giờ tôi cần lặp qua tất cả các cột có sẵn trong OLD hoặc MỚI.
Liên kết chỉ có câu trả lời được tán thành trên Stack Overflow. Nó sẽ là tốt hơn để bao gồm các điểm thích hợp trong bài này trong trường hợp các liên kết trở nên không hợp lệ. –
Nó cũng không rõ ràng làm thế nào để sử dụng các giải pháp trong các liên kết bên trong một kích hoạt (nơi bạn cần truy cập OLD và NEW – adinas