return self::run($query);
}
+ private static $inTransaction = false;
public static function startTransaction()
{
+ if (self::$inTransaction) {
+ throw new XDBException('START TRANSACTION', 'Already in a transaction');
+ }
+ self::$inTransaction = true;
self::rawExecute('SET AUTOCOMMIT = 0');
self::rawExecute('START TRANSACTION');
}
{
self::rawExecute('COMMIT');
self::rawExecute('SET AUTOCOMMIT = 1');
+ self::$inTransaction = false;
}
public static function rollback()
{
self::rawExecute('ROLLBACK');
self::rawExecute('SET AUTOCOMMIT = 1');
+ self::$inTransaction = false;
}
public static function runTransactionV($callback, array $args)
{
$args = func_get_args();
$cb = array_shift($args);
- self::runTransactionV($cb, $args);
+ return self::runTransactionV($cb, $args);
}
public static function iterator()