- Fixed transactions in SQLite
This commit is contained in:
		
							parent
							
								
									d4181065cf
								
							
						
					
					
						commit
						aa07c728fe
					
				| @ -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(); | ||||
|     } | ||||
| } | ||||
| @ -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; | ||||
|     } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user