I'll create a trigger on the BeforeUpdate event of the updating table. Here you have access to the OLD values as well for the NEW ones. So, let's say, having a History table the sql in the trigger should be like:
insert into history (a,b,c...) values (old.a,old.b,old.c ...)
You can insert the whole record or just those values where old one <> new one. Make a foreign key in the History table linked to the primary key of the updating one.
HTH