mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@177506 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			30 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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.
 |