diff --git a/doc/database_transactions.txt b/doc/database_transactions.txt new file mode 100644 index 0000000000000000000000000000000000000000..6db81cd770870f6b74fbbefb5449362428af1d07 --- /dev/null +++ b/doc/database_transactions.txt @@ -0,0 +1,29 @@ +As of 1.6.2, Asterisk now supports doing database transactions from the +dialplan. A number of new applications and functions have been introduced +for this purpose and this document should hopefully familiarize you with +all of them. + +First, the ODBC() function has been added which is used to set up all new +database transactions. Simply write the name of the transaction to this +function, along with the arguments of "transaction" and the database name, +e.g. Set(ODBC(transaction,postgres-asterisk)=foo). In this example, the +name of the transaction is "foo". The name doesn't really matter, unless +you're manipulating multiple transactions within the same dialplan, at the +same time. Then, you use the transaction name to change which transaction +is active for the next dialplan function. + +The ODBC() function is also used to turn on a mode known as forcecommit. +For most cases, you won't need to use this, but it's there. It simply +causes a transaction to be committed, when the channel hangs up. The other +property which may be set is the isolation property. Please consult with +your database vendor as to which values are supported by their ODBC driver. +Asterisk supports setting all standard ODBC values, but many databases do +not support the entire complement. + +Finally, when you have run multiple statements on your transaction and you +wish to complete the transaction, use the ODBC_Commit and ODBC_Rollback +applications, along with the transaction ID (in the example above, "foo") +to commit or rollback the transaction. Please note that if you do not +explicitly commit the transaction or if forcecommit is not turned on, the +transaction will be automatically rolled back at channel destruction (after +hangup) and all related database resources released back to the pool.