Hi guys,
I have a quick question,
When executing a SQL transaction, that is, grouping several queries, we can use the command “system.db.rollbackTransaction (txId)” in case of failure.
My question is, in queries that are not transaction type, what happens when they fail?? Rollback is done automatically?? Or is it recommended to also add the rollback command in case of queries that are extensive or prone to failure??
-----------------------------SQL TRANSACTION EXAMPLE
# This example will use a for-loop to run multiple queries in a single Transaction, and rollback if an error occurs.
# Create some variables for use later
txId = system.db.beginTransaction(timeout=5000)
status=2
query = "UPDATE MachineStatus SET status=? WHERE ID=?"
errors = False # A flag to denote if we ran into a problem with a query during the transaction
for machineId in range(8):
try:
system.db.runPrepUpdate(query, args=[status, machineId], tx=txId)
except:
errors = True
break
# If we encountered an error...
if errors:
# ...then rollback the transaction
**system.db.rollbackTransaction(txId)**
else:
# Otherwise, commit it
system.db.commitTransaction(txId)
# In either case, close the transaction when we're done.
system.db.closeTransaction(txId)
-----------------------------SQL QUERY EXAMPLE
query = "INSERT INTO orders (account_id, product_name) VALUES (%i, '%s')" % (123, "Bananas")
system.db.run(query)
Much thanks!