From f5ea6653153ea8e78f347b7a552ff9049cc47caf Mon Sep 17 00:00:00 2001 From: admin Date: Sat, 23 Sep 2006 19:58:47 +0000 Subject: --- system/drivers/DB_mysql.php | 80 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) (limited to 'system/drivers') diff --git a/system/drivers/DB_mysql.php b/system/drivers/DB_mysql.php index 72790976e..69a6db0eb 100644 --- a/system/drivers/DB_mysql.php +++ b/system/drivers/DB_mysql.php @@ -83,7 +83,7 @@ class CI_DB_mysql extends CI_DB { * @param string an SQL query * @return resource */ - function execute($sql) + function _execute($sql) { $sql = $this->_prep_query($sql); return @mysql_query($sql, $this->conn_id); @@ -114,6 +114,84 @@ class CI_DB_mysql extends CI_DB { return $sql; } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @access public + * @return bool + */ + function trans_begin() + { + if ( ! $this->trans_enabled) + { + return TRUE; + } + + // When transactions are nested we only begin/commit/rollback the outermost ones + if ($this->_trans_depth > 0) + { + return TRUE; + } + + $this->simple_query('SET AUTOCOMMIT=0'); + $this->simple_query('START TRANSACTION'); // can also be BEGIN or BEGIN WORK + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @access public + * @return bool + */ + function trans_commit() + { + if ( ! $this->trans_enabled) + { + return TRUE; + } + + // When transactions are nested we only begin/commit/rollback the outermost ones + if ($this->_trans_depth > 0) + { + return TRUE; + } + + $this->simple_query('COMMIT'); + $this->simple_query('SET AUTOCOMMIT=1'); + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @access public + * @return bool + */ + function trans_rollback() + { + if ( ! $this->trans_enabled) + { + return TRUE; + } + + // When transactions are nested we only begin/commit/rollback the outermost ones + if ($this->_trans_depth > 0) + { + return TRUE; + } + + $this->simple_query('ROLLBACK'); + $this->simple_query('SET AUTOCOMMIT=1'); + return TRUE; + } // -------------------------------------------------------------------- -- cgit v1.2.3-24-g4f1b