Added support for limit() into update() statements in Active Record.
diff --git a/system/database/DB_active_rec.php b/system/database/DB_active_rec.php
index 4736858..4a88bd8 100644
--- a/system/database/DB_active_rec.php
+++ b/system/database/DB_active_rec.php
@@ -826,7 +826,7 @@
 	 * @param	mixed	the where clause

 	 * @return	object

 	 */

-	function update($table = '', $set = NULL, $where = null)

+	function update($table = '', $set = NULL, $where = null, $limit = NULL)

 	{

 		if ( ! is_null($set))

 		{

@@ -860,8 +860,13 @@
 		{

 			$this->where($where);

 		}

+

+		if ($limit != null)

+		{

+			$this->limit($limit);

+		}

 		

-		$sql = $this->_update($this->dbprefix.$table, $this->ar_set, $this->ar_where);

+		$sql = $this->_update($this->dbprefix.$table, $this->ar_set, $this->ar_where, $this->ar_limit);

 		

 		$this->_reset_write();

 		return $this->query($sql);

@@ -1101,6 +1106,7 @@
 		$this->ar_set		= array();

 		$this->ar_from		= array();

 		$this->ar_where		= array();

+		$this->ar_limit		= FALSE;

 	}

 	

 }

diff --git a/system/database/drivers/mssql/mssql_driver.php b/system/database/drivers/mssql/mssql_driver.php
index 8961045..613be69 100644
--- a/system/database/drivers/mssql/mssql_driver.php
+++ b/system/database/drivers/mssql/mssql_driver.php
@@ -421,14 +421,16 @@
 	 * @param	array	the where clause

 	 * @return	string

 	 */

-	function _update($table, $values, $where)

+	function _update($table, $values, $where, $limit = FALSE)

 	{

 		foreach($values as $key => $val)

 		{

 			$valstr[] = $key." = ".$val;

 		}

+		

+		$limit = (!$limit) ? '' : ' LIMIT '.$limit;

 	

-		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);

+		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where).$limit;

 	}

 	

 	// --------------------------------------------------------------------

diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index 2d91c59..aaa9cc6 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -439,14 +439,16 @@
 	 * @param	array	the where clause

 	 * @return	string

 	 */

-	function _update($table, $values, $where)

+	function _update($table, $values, $where, $limit = FALSE)

 	{

 		foreach($values as $key => $val)

 		{

 			$valstr[] = $key." = ".$val;

 		}

+		

+		$limit = (!$limit) ? '' : ' LIMIT '.$limit;

 	

-		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);

+		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where).$limit;

 	}

 	

 	// --------------------------------------------------------------------

diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index 0991170..f6f106e 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -432,14 +432,16 @@
 	 * @param	array	the where clause

 	 * @return	string

 	 */

-	function _update($table, $values, $where)

+	function _update($table, $values, $where, $limit = FALSE)

 	{

 		foreach($values as $key => $val)

 		{

 			$valstr[] = $key." = ".$val;

 		}

+		

+		$limit = (!$limit) ? '' : ' LIMIT '.$limit;

 	

-		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);

+		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where).$limit;

 	}

 	

 	// --------------------------------------------------------------------

diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index e6bcefe..1dd157c 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -535,14 +535,16 @@
 	 * @param   array   the where clause

 	 * @return  string

 	 */

-	function _update($table, $values, $where)

+	function _update($table, $values, $where, $limit = FALSE)

 	{

 		foreach($values as $key => $val)

 		{

 			$valstr[] = $key." = ".$val;

 		}

-

-		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);

+		

+		$limit = (!$limit) ? '' : ' LIMIT '.$limit;

+	

+		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where).$limit;

 	}

 

 	// --------------------------------------------------------------------

diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index 5e16762..66d5f89 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -394,14 +394,16 @@
 	 * @param	array	the where clause

 	 * @return	string

 	 */

-	function _update($table, $values, $where)

+	function _update($table, $values, $where, $limit = FALSE)

 	{

 		foreach($values as $key => $val)

 		{

 			$valstr[] = $key." = ".$val;

 		}

+		

+		$limit = (!$limit) ? '' : ' LIMIT '.$limit;

 	

-		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);

+		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where).$limit;

 	}

 	

 	// --------------------------------------------------------------------

diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index e54f9cc..076d87a 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -423,14 +423,16 @@
 	 * @param	array	the where clause

 	 * @return	string

 	 */

-	function _update($table, $values, $where)

+	function _update($table, $values, $where, $limit = FALSE)

 	{

 		foreach($values as $key => $val)

 		{

 			$valstr[] = $key." = ".$val;

 		}

+		

+		$limit = (!$limit) ? '' : ' LIMIT '.$limit;

 	

-		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);

+		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where).$limit;

 	}

 	

 	// --------------------------------------------------------------------

diff --git a/system/database/drivers/sqlite/sqlite_driver.php b/system/database/drivers/sqlite/sqlite_driver.php
index aa6738c..b701d6b 100644
--- a/system/database/drivers/sqlite/sqlite_driver.php
+++ b/system/database/drivers/sqlite/sqlite_driver.php
@@ -418,14 +418,16 @@
 	 * @param	array	the where clause

 	 * @return	string

 	 */

-	function _update($table, $values, $where)

+	function _update($table, $values, $where, $limit = FALSE)

 	{

 		foreach($values as $key => $val)

 		{

 			$valstr[] = $key." = ".$val;

 		}

+		

+		$limit = (!$limit) ? '' : ' LIMIT '.$limit;

 	

-		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where);

+		return "UPDATE ".$this->_escape_table($table)." SET ".implode(', ', $valstr)." WHERE ".implode(" ", $where).$limit;

 	}

 	

 	// --------------------------------------------------------------------