Document how to use database transactions
authorTilghman Lesher <tilghman@meg.abyt.es>
Thu, 19 Feb 2009 19:46:13 +0000 (19:46 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Thu, 19 Feb 2009 19:46:13 +0000 (19:46 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@177506 65c4cc65-6c06-0410-ace0-fbb531ad65f3

doc/database_transactions.txt [new file with mode: 0644]

diff --git a/doc/database_transactions.txt b/doc/database_transactions.txt
new file mode 100644 (file)
index 0000000..6db81cd
--- /dev/null
@@ -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.