I want to insert or update, then insert a new log into another table.
I’m running a nifty little query to pull information from a staging table into other tables, something like
Insert into
select
on duplicate key update
What I’d like to do without php, or triggers (the lead dev doesn’t like em, and I’m not that familiar with them either) is insert a new record into a logging table. Needed for reporting on what data was updated or inserted and on what table.
Any hints or examples?
Note: I was doing this with php just fine, although it was taking about 4 hours to process on 50K rows. Using the laravel php framework, looping over each entry in staging update 4 other tables with the data and log for each one was equalling 8 queries for each row (this was using laravel models not raw sql). I was able to optimise by pushing logs into an array and batch processing. But you can’t beat 15sec processing time in mysql by bypassing all that throughput. Now I’m hooked on doing awesome things the sql way.
If you need executing more than one query statement. I refer to use transaction then trigger to guarantee Atomicity (part of ACID). Bellow code is sample for MySql transaction:
Statements inside transaction will be executed all or nothing.