- Fixed transactions in SQLite

This commit is contained in:
mcndave committed 2024-06-28 07:47:53 -04:00
1 parent d4181065cf
commit aa07c728fe
2 files changed
+21 -9

No files matched your search

+7 -2
View File
@@ -8,8 +8,8 @@ class SqlPdoObject extends \Ulmus\Common\PdoObject
public function beginTransaction(): bool
{
if ( 0 === ++$this->openedTransaction ) {
return parent::beginTransaction();
if ( 0 === $this->openedTransaction++ ) {
return $this->openTransaction();
}
return $this->exec('SAVEPOINT transaction_'.$this->openedTransaction) !== false;
@@ -32,4 +32,9 @@ class SqlPdoObject extends \Ulmus\Common\PdoObject
return parent::rollback();
}
protected function openTransaction() : bool
{
return parent::beginTransaction();
}
}
+14 -7
View File
@@ -4,16 +4,23 @@ namespace Ulmus\Common\PdoObject;
class SqlitePdoObject extends SqlPdoObject
{
public function beginTransaction(): bool
{
if ( 0 === ++$this->openedTransaction ) {
return $this->beginImmediateTransaction();
}
public bool $inTransaction = false;
return $this->exec('SAVEPOINT transaction_'.$this->openedTransaction) !== false;
public function inTransaction(): bool
{
return $this->openedTransaction > 0;
}
protected function beginImmediateTransaction(): bool
public function commit(): bool
{
if ( 0 === --$this->openedTransaction) {
return $this->exec("COMMIT") !== false;
}
return false;
}
protected function openTransaction(): bool
{
return $this->exec("BEGIN IMMEDIATE TRANSACTION") !== false;
}