I'd like my program to be able to install plugins, and rollback all the changes made if an error occurs. So I create a transaction that keeps all the things that were added while installing the plugin. The problem is that the plugin may want to create tables, and doing so automatically commits the current transaction in MySQL.
See Statements That Cause an Implicit Commit on MySQL web site.
Any idea on how I could do it?
I thought of using temporary tables as they are not automatically committed, unless they are using too much memory, but it looks like temporary tables cannot be rolled back anyway (and I haven't found a way to convert them to permanent tables).
I just found out about "save points", but I don't really understand how/when it should be used nor if it can help me achieve what I want.