Mailinglisten-Archive |
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