How can I use trigger to simply update a table with the last time a table was edited? I know that by using triggers it is “for each row” but if someone’s inserting more than one row, it’d be pointlessly inserting or altering the table over and over again. Is there any way to do this without doing it over and over again?
I’d like to be able to just have it do it once for all of the inserts instead of having it done time and time again. If not I guess I can force it, via a wrapper.
edit 1:
Well to explain some more of the design I guess then.
I’m going to be having a table in another database to handle the last_updated data for things like chat, or the players “mailbox”, and another one for the development things like tables for quests, skills, items etc. And I want to be able to know when a table was last updated so that I can easily see before I go scan the table to see for new things.
Basically this is what I’d like to do(or something similar), I’m also using PHP so it’s likely to be PHP-based approach in the code but the SQL should be kind of standard. I’m not going to do full code but rather semi-runnable.
last_modified=mysql_query("select last_modified from various_stats.table_last_updated where database_name=`database_name` and `table_name`");
if(last_modified>last_checked_time){
data_to_get_updated=mysql_query("select something from various_<something>.table_name where last_modified>last_checked_time");
}
else{
do_nothing;
}
edit 2: I’m using InnoDB, and thus I cannot use the information schema’s update_time since it never changes.
will this help you, if im on the right track that is:
The above solution is for myisam, for innodb the norm is to set a sceduled script, this can be set as a cron job or a windows scheduled task, if you dont have that kind of control over your web host, you could possibly set up a small server at your work office and run the cron from there. if you do this every say 20 seconds you could simply record the current top auto incremented ID and use this as a guid, if current ID is higher than the last recorded ID you then update your records to show the last changed time to be now.
as this will only be one call to a server every XX seconds, it wont really hammer the server too much and should just run silently in the background.
If you do go down the scheduled task root, it would be wise to add error capture in your script so that you can be alerted via email if something stops working etc.