I have been importing simple spreadsheets of data into mySQL using the migration toolkit for months. I load up a series of rows into a single table that has an after insert trigger that calls a stored pprocedure that does more work on other tables. When I first did this I noticed that if mySQL hit a data problem after the trigger then SQLYog would inform me there was a problem (but not where exactly) in my logic and ALL of the records that were loaded up to that point and their impact from the trigger on downstream tables would be backed out. For better or worse I concluded that the transaction commit was being managed by SQLYog across the whole load.
However now I am finding my imports no longer behave this way and that records up to and including the one that caused the abort are loaded into the initial table while the downstream impacts of the trigger up to that record are also left in place.
Now I can live with either approach but I cannot live with the uncertainty of which approach will appear!
Can someone explain to me what is driving the different behaviours and how to control them?