phpbar.de logo

Mailinglisten-Archive

[php] RE: LOB's der Schrecken der Nation :-)

[php] RE: LOB's der Schrecken der Nation :-)

Thomas Fromm tfromm_(at)_cs.uni-potsdam.de
Tue, 20 Jun 2000 15:44:24 +0200


Hallo,


also nachdem ich nochmal ein wenig gegruebelt hab, hab ich eine loesung fuer
das update problem von LOB's gefunden.

zuerst waehlt man den datensatz fuer ein update aus, dieser besitzt dann eine
exclusive sperre.
 	    $req=sprintf("SELECT data_%s FROM %s WHEREid_%s='%s'", 
		$this->type,$this->type,$this->type,$jobid);
	    $this->parse($req);
	    $this->execute($this->stmt,OCI_DEFAULT);

nun macht man ein update und fuegt die daten wieder ein. 

	    $req=sprintf("UPDATE %s SET data_%s=:data WHERE id_%s='%s'",
			 $this->type,$this->type,$this->type,$jobid);
	    $this->parse($req);
	    _(at)_OCIBindByName($this->stmt,":data",$data,-1);
	    $this->execute($this->stmt,OCI_DEFAULT);
	    $this->commit();

durch das commit wird die sperre aufgehoben und die aenderung festgeschrieben.

verwendet man BFILE ist keine explizite sperre notwendig, diese ist nur fuer
intern gespeicherte LOB's notwendig.
Ausserdem sollte man aufpassen, sofern eine LobSpalte ein NULL wert hat kann
man erst, nachdem man diese auf ein EMPTY_BLOB() oder CLOB gesetzt hat
geupdatet werden. Auch dies ist bei BFILE nich notwendig.


gruss
thomas


-- 
--------------------------------------------------------- 
Mail: tfromm_(at)_cs.uni-potsdam.de 
Web: http://codewizards.org/thomas.fromm
Job: http://www.inubit.com 
PHP-Stand auf Europas größter Linux-Messe: 'Linux-Tag' ! 
weitere Infos _(at)_ http://www.dynamic-webpages.de/


php::bar PHP Wiki   -   Listenarchive