Let me start by saying that I am not a DB expert and, although I have done significant work using DB and using transactions, I have not done so using Base or LO in general.
More comments in-line.
I had hoped I would find a tutorial something along the lines of:
We're going to create a way for users to enter/update data across a few
tables in a single transaction.
Here's how you do it using macros/BASIC... Here's how you do it using the
DB's native capabilities...
In order to stop our form from entering the data into each field as we
type, we need to do so and so...
Now to collect all the data and click submit...
For all of my use cases, none of this has mattered, so I never considered it. I assume that you need to set "autocommit" to off on the connection.
setAutoCommit(False):
Enable (True) or disable (False) a connection's auto-commit mode. In auto-commit mode, all SQL statements are executed and committed as individual transactions. Otherwise, SQL statements are grouped into transactions that are terminated by a call to either commit() or rollback(). A commit occurs when a statement completes or the next execute occurs, whichever comes first. If a result set is obtained, the statement completes when the last row from the result set is retrieved or the result set is closed.
So, I assume that you would simply set auto commit to false, and then, when you are finished, call "commit()" on the transaction. Sadly, I have no idea at all if the Form's behavior will over-ride what you do and issue a commit as you fill in each sub-form.
I have no idea if you need to consider "Deferrability" in all this (deferrability is related to foreign constraints).