Estoy usando MYSQL con PHP para una base de datos de estudiantes.
Cada vez que actualizo la información de un estudiante, me gustaría mantener un registro de los valores anteriores.
En este momento tengo un disparador configurado para insertar la actualización completa en una tabla de historial que es un duplicado de la tabla de Estudiantes con algunas columnas añadidas: Acción y marca de tiempo.
before update on Students for each row INSERT INTO StudentHistory SELECT 'update', NULL, NOW(), d.* FROM Students AS d WHERE d.ID = NEW.ID;Sin embargo, dado que esta tabla tiene alrededor de 20 campos, preferiría no tener tantos datos duplicados si solo se actualizara un campo.
¿Hay alguna manera de insertar solo columnas que realmente cambiaron en la tabla de historial?
Si no, ¿hay alguna manera de comparar las filas en la tabla de historial de cada estudiante para ver qué columnas cambiaron realmente?