X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Fdb%2Fsql_functions.inc;h=85a25137df35b6b0997766b38bd4781421366f18;hb=3613e32ad573d5faccb974a421702bdd87583878;hp=0fa479dc2b946754157a383025bd3ef93d70e234;hpb=d5f7c2099d1dc612e651722e5843329bd8314863;p=fa-stable.git diff --git a/includes/db/sql_functions.inc b/includes/db/sql_functions.inc index 0fa479dc..85a25137 100644 --- a/includes/db/sql_functions.inc +++ b/includes/db/sql_functions.inc @@ -12,21 +12,44 @@ // // General database functions common for all modules. // -//------------------------------------------------------------------- +//------------------------------------------------------------------- +// Multilevel transaction control. +// + function begin_transaction() { - db_query("BEGIN", "could not start a transaction"); + global $transaction_level; // set in set_global_connection() + + if (!$transaction_level) { + db_query("BEGIN", "could not start a transaction"); + } + $transaction_level++; } function commit_transaction() { - db_query("COMMIT", "could not commit a transaction"); + global $transaction_level; + + $transaction_level--; + + if (!$transaction_level) { + db_query("COMMIT", "could not commit a transaction"); + } } +/* + This function is called on end of script execution to cancel + all aborted transactions (if any) +*/ function cancel_transaction() { - db_query("ROLLBACK", "could not cancel a transaction"); + global $transaction_level; + + if ($transaction_level) { + db_query("ROLLBACK", "could not cancel a transaction"); + } } + //----------------------------------------------------------------------------- // Update record activity status. //