I have date_created and date_modified columns on each table in database.
What are advantages/disadvantages setting timestamp columns at database using MySQL triggers vs setting them at application layer using PHP?
Which is easier to maintain and have better time synchronization when deployed across on many servers?
EDIT:
since Johan suggested setting timestamps in database is good, are these correct implementations?
additionally, is it good practice to have date_created and date_modified on every table?
or do you recommend adding them on certain tables?
date_created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
date_modified TIMESTAMP NOT NULL DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
Timestamp in the database.
If you replicate in a master-slave setup, database timestamps are correctly replicated (using the original timestamp).
You do not (!) set timestamps in triggers.
Instead you specify them in the table definition, MySQL will automatically set the correct timestamp on insert and/or update.
You only have to set them once, when you create (or alter) the table and that’s it.
Could not be easier.