-
Notifications
You must be signed in to change notification settings - Fork 49
/
pgsqlLOBCreate.xml
121 lines (114 loc) · 3.89 KB
/
pgsqlLOBCreate.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: e41806c30bf6975e452c0d4ce35ab0984c2fa68c Maintainer: seros Status: ready -->
<!-- Reviewed: yes Maintainer: seros -->
<!-- Generated by xml_proto.php v2.3. Found in /scripts directory of phpdoc. -->
<refentry xml:id="pdo.pgsqllobcreate" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>PDO::pgsqlLOBCreate</refname>
<refpurpose>Crear un nuevo objeto grande</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>string</type><methodname>PDO::pgsqlLOBCreate</methodname>
<void/>
</methodsynopsis>
<para>
<function>PDO::pgsqlLOBCreate</function> crea un objeto grande y
devuelve el OID del mismo. Se podrá entonces abrir un flujo sobre el objeto
usando <function>PDO::pgsqlLOBOpen</function> 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 <function>PDO::pgsqlLOBUnlink</function>.
</para>
<para>
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 <function>PDO::pgsqlLOBUnlink</function> 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,
se ha de intentar 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.
</para>
<note>
<simpara>
Esta función debe ser llamada dentro de una transacción.
</simpara>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<function>PDO::pgsqlLOBCreate</function> no tiene parámetros.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Devuelve el OID del objeto grande recién creado en caso de éxito, o &false;
en caso de error.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Un ejemplo de <function>PDO::pgsqlLOBCreate</function></title>
<para>
Este ejemplo crea un nuevo objeto grande y copia el contenido
de un fichero en él. El OID es entonces almacenado en una tabla.
</para>
<programlisting role="php">
<![CDATA[
<?php
$bd = new PDO('pgsql:dbname=test host=localhost', $usuario, $contraseña);
$bd->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();
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>PDO::pgsqlLOBOpen</function></member>
<member><function>PDO::pgsqlLOBUnlink</function></member>
<member><function>pg_lo_create</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->