mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +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.
 |