Updating entry WITHOUT updating timestamp
Don't use timestamps, but track times manually.
If you really want to update a record and don't update it's timestamp, use:
UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;
Is there a way to manually disable updating the timestamp on a special occasion? (eg: updating the entry to revise a blog post, but not to re-date it)
Sounds like you need to configure the default constraint so that it populates the column on insertion only:
DEFAULT CURRENT_TIMESTAMP
Changing it to only be this means that any revisions will not trigger the timestamp value to be updated. IE: If you created the blogpost yesterday, and corrected a typo today - the date in the column would still be for yesterday.
To make your table/timestamp auto-update:
ALTER TABLE myTable
CHANGE myTimestampColumn
myTimestampColumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
To make it not auto-update:
ALTER TABLE myTable
CHANGE myTimestampColumn
myTimestampColumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP;
NOTE: The "default current_timestamp" part just sets it to the current stamp at default time, since the field is not-null. You can remove both the not null and the default, if you like.
You can manually set the value of the column to its current value in the update command:
UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;
If you don't set the value in the query, it will be updated to the current timestamp as per the table definition.