Pdo\Pgsql::lobCreate
Crear un nuevo objeto grande
&reftitle.description;
public stringfalsePdo\Pgsql::lobCreate
Pdo\Pgsql::lobCreate crea un objeto grande
y devuelve el OID que lo referencia.
Puede abrirse para leer o escribir datos con
Pdo\Pgsql::lobOpen.
El OID puede almacenarse en columnas de tipo OID y utilizarse para referenciar
el objeto grande, sin que la fila crezca de manera arbitraria.
El objeto grande continuará existiendo en la base de datos hasta que
sea eliminado mediante la llamada a Pdo\Pgsql::lobUnlink.
Los objetos grandes son objetos voluminosos para utilizar.
De hecho, es necesario llamar a Pdo\Pgsql::lobUnlink
antes de eliminar la última fila que referencia el OID en toda la base de datos;
de lo contrario, los objetos grandes no referenciados permanecerán en el servidor indefinidamente.
Además, los objetos grandes no tienen controles de acceso.
Una alternativa es el tipo de columna bytea, que puede ser de hasta 1 Go de tamaño,
y este tipo de columna gestiona de manera transparente el almacenamiento para un tamaño de fila óptimo.
Esta función, y todas las manipulaciones del objeto grande,
deben ser llamadas y realizadas dentro de una transacción.
&reftitle.parameters;
&no.function.parameters;
&reftitle.returnvalues;
Devuelve el OID del nuevo objeto grande creado en caso de éxito,
&return.falseforfailure;.
&reftitle.examples;
Ejemplo de Pdo\Pgsql::lobCreate
Este ejemplo crea un nuevo objeto grande y copia el contenido
de un fichero dentro.
El OID es almacenado posteriormente en una tabla.
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$oid = $db->lobCreate();
$stream = $db->lobOpen($oid, 'w');
$local = fopen($filename, 'rb');
stream_copy_to_stream($local, $stream);
$local = null;
$stream = null;
$stmt = $db->prepare("INSERT INTO BLOBS (ident, oid) VALUES (?, ?)");
$stmt->execute([$some_id, $oid]);
$db->commit();
?>
]]>
&reftitle.seealso;
Pdo\Pgsql::lobOpen
Pdo\Pgsql::lobUnlink
pg_lo_create
pg_lo_open