As in many databases, i am designing a database that should keep record of previous versions of the rows changed in each table.
The standard solution to this problem is
How will you define primary keys? There will be many rows with the same primary key due to keaping the history rows in the same table.
Also you don't seem to have a way to know the order of your history rows when a single "real" row gets changed more the once.
(One project I worked on, we generated all the history tables and triggers using codesmith, this worked very well.)