Sympathisant: Transaction, Commit & Rollback

Beitrag lesen

Hai Christian,

kurze Verstaendnisfrage:

Ein ROLLBACK direkt nach einem COMMIT hat keinerlei Effekt.

Wie habe ich das zu verstehen? Nur bei erfolgreichem Commit?

Folgendes Beispiel anhand PDO:

<?  
public function Insert($bo)  
{  
	try {  
		$this->GetPDO()->beginTransaction();	  
		  
		// [....]  
		  
		if( !$this->GetPDO()->commit() )  
			throw new PDOException("Failed to insert Contact: ".$this->GetLastError());  
		  
		$bo->SetId( $this->GetPDO()->lastInsertId() );  
				  
		// [....]  
		return $bo;  
	}  
	catch(PDOException $e)  
	{  
		Logger::Error('ContactHandler->Insert(): '.$e->getMessage()).' Starting Rollback!';  
		if( !$this->GetPDO()->rollback() )  
			Logger::Error('Rollback Failed!' );  
		Logger::Info('Rollback Successfully!' );  
		return false;  
	}  
}  
?>

Wenn mit dem Statement (commit) etwas nicht stimmt, dann wird das Rollback erfolgreich aufgerufen.

MfG,
Sympatisant

--
"If the future isn't bright, at least it is colorful"