PHP 8.5.0 Alpha 2 available for testing

Pdo\Pgsql::lobCreate

(PHP 8 >= 8.4.0)

Pdo\Pgsql::lobCreateCrear un nuevo objeto grande

Descripción

public Pdo\Pgsql::lobCreate(): string|false

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.

Nota: Esta función, y todas las manipulaciones del objeto grande, deben ser llamadas y realizadas dentro de una transacción.

Parámetros

Esta función no contiene ningún parámetro.

Valores devueltos

Devuelve el OID del nuevo objeto grande creado en caso de éxito, o false si ocurre un error.

Ejemplos

Ejemplo #1 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.

<?php
$db
= new Pdo\Pgsql('pgsql:dbname=test host=localhost', $user, $pass);
$db->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();
?>

Ver también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top