Storing the last updated date of a row in a different table
My current idea is to to create a new table in the legacy database and then create a trigger on the old table to insert the date and primary key of any new rows created or updated in the old tables.


Your method will work, but that seems almost more likely to break something.. In that case, you're talking about doubling your write load. In the other case you're talking about adding a single column time stamp with time zone DEFAULT now() that won't otherwise be touched or seen,


unless someone wrote code that relies on * 
and,


that code depends on the amount of columns returns.
or, reorders the columns (ie., sorts) and depends on the sorted order.



I would say adding a column is an extremely safe operation and the right thing to do.

See also


Create a trigger on all the last_modified columns in PostgreSQL


Trying a workaround

I tried creating a TRIGGER to add the column BEFORE INSERT on mysql, that also failed. So the only method you have is


another table if you're trying to insure against spurious use of INSERT without explicit column names.
replication


Example code (doesn't work) 

CREATE TABLE f (a int, b int);

delimiter //
CREATE TRIGGER use_postgresql_insert
BEFORE INSERT ON f
FOR EACH ROW
BEGIN
  SET NEW.b = 1;
END;
//

INSERT INTO f VALUES (5);
ERROR 1136 (21S01): Column count doesn't match value count at row 1