PDO::pgsqlLOBCreate
Crea un nuevo objeto grande
&reftitle.description;
public stringPDO::pgsqlLOBCreate
PDO::pgsqlLOBCreate crea un objeto grande y
devuelve el OID del mismo. Se podría entonces abrir un flujo sobre el objeto
usando PDO::pgsqlLOBOpen para leer o escribir datos en
él. El OID se puede almacenar en columnas de tipo OID y se puede usar para hacer referencia
al objeto grande, sin causar que la fila se vuelva arbitrariamente grande.
El objeto grande continuará estando en la base de datos hasta que sea
eliminado mediante una llamada a PDO::pgsqlLOBUnlink.
Los objetos grandes pueden tener un tamaño de hasta 2GB, pero son incómodos de usar; es necesario
asegurarse de que se invoca a PDO::pgsqlLOBUnlink antes de
borrar la última fila que hacía referencia a su OID desde la base de datos.
Además, los objetos grandes no tienen controles de acceso. Como alternativa,
inténtelo con el tipo de columna BYTEA; las versiones recientes de PostgreSQL permiten un
tamaño para las columnas BYTEA de hasta 1GB y administran de forma transparente el almacenamiento
para un tamaño de fila óptimo.
Esta función debe ser llamada dentro de una transacción.
&reftitle.parameters;
PDO::pgsqlLOBCreate no tiene parámetros.
&reftitle.returnvalues;
Devuelve el OID del objeto grande recién creado en caso de éxito, o &false;
en caso de error.
&reftitle.examples;
Un ejemplo de PDO::pgsqlLOBCreate
Este ejemplo crea un nuevo objeto grande y copia el contenido
de un fichero en él. El OID es entonces almacenado en una tabla.
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bd->beginTransaction();
$oid = $bd->pgsqlLOBCreate();
$flujo = $bd->pgsqlLOBOpen($oid, 'w');
$local = fopen($filename, 'rb');
stream_copy_to_stream($local, $flujo);
$local = null;
$flujo = null;
$sentencia = $bd->prepare("INSERT INTO BLOBS (ident, oid) VALUES (?, ?)");
$sentencia->execute(array($algún_id, $oid));
$bd->commit();
?>
]]>
&reftitle.seealso;
PDO::pgsqlLOBOpen
PDO::pgsqlLOBUnlink
pg_lo_create