mirror of
https://github.com/macintoshplus/doc-en.git
synced 2026-03-25 17:32:09 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@81076 c90b9560-bf6c-de11-be94-00142212c4b1
319 lines
11 KiB
XML
319 lines
11 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
||
<!-- EN-Revision: 1.3 Maintainer: phaser Status: ready -->
|
||
<reference id="ref.pgsql">
|
||
<title>Funções PostgreSQL</title>
|
||
<titleabbrev>PostgreSQL</titleabbrev>
|
||
|
||
<partintro>
|
||
<para>
|
||
Postgres, desenvolvida originalmente no Deparetamento de Ciências
|
||
de Computação de Berkeley, foi pioneira em muitos dos conceitos de
|
||
relacionamento-objeto que agora estão tornando-se disponíveis em
|
||
alguns bancos de dados comerciais. Ele fornece suporte a linguagem
|
||
SQL92/SQL99, integridade de transações e extensibilidade de tipos.
|
||
Postgres é um descendente em código aberto do código original de
|
||
Berkeley.
|
||
</para>
|
||
<para>
|
||
O banco de dados PostgreSQL é um produto Open Source disponível
|
||
sem nenhum custo. Para usar o suporte a PostgreSQL você precisa
|
||
do PostgreSQL 6.5 ou superior. PostgreSQL 7.0 ou superior para
|
||
habilitar todas as funções do módulo PostgreSQL. PostgreSQL suporta
|
||
muitos códigos de caracteres incluindo a codificação de carcateres
|
||
multibyte. A versão atual e maiores informações sobre PostgreSQL
|
||
está disponível em <ulink url="&url.pgsql;">&url.pgsql;</ulink>.
|
||
</para>
|
||
<para>
|
||
Para habilitar o suporte a PostgreSQL a opção de configuração
|
||
<option role="configure">--with-pgsql[=DIR]</option> é exigida quando
|
||
você compila o PHP. Se o módulo compartilhado está disponível, o módulo
|
||
PostgreSQL pode ser carregado usando a diretiva
|
||
<link linkend="ini.extension">extension</link> no &php.ini; ou
|
||
a função <function>dl</function>. Diretivas ini suportadas estão descritas
|
||
em <filename>php.ini-dist</filename> que vem com a distribuição.
|
||
</para>
|
||
<warning>
|
||
<para>
|
||
Usar o módulo PostgreSQL com o PHP 4.0.6 não é recomendado devido a
|
||
um bug no código de manipulação de mensagens de nota. Use o 4.1.0 ou
|
||
superior.
|
||
</para>
|
||
</warning>
|
||
<warning>
|
||
<para>
|
||
Os nomes das funções PostgreSQL serão alterados na versão 4.2.0 para
|
||
confirmar os padrões de programação atuais. A maioria dos novos nomes
|
||
terão sublinhados adicionais, por exemplo pg_lo_open(). Algumas funções
|
||
foram renomeadas para uma maior consistência, por exemplo pg_exec() que
|
||
mudou para pg_query(). Os nomes antigos podem ser usados na 4.2.0 e em
|
||
algumas poucas outras atualizações após esta, mas eles serão deletados em
|
||
um futuro próximo.
|
||
</para>
|
||
<table>
|
||
<title>Nomes de funções alterados</title>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>Nomes antigos</entry>
|
||
<entry>Nomes novos</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry><function>pg_exec</function></entry>
|
||
<entry><function>pg_query</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_getlastoid</function></entry>
|
||
<entry><function>pg_last_oid</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_cmdtuples</function></entry>
|
||
<entry><function>pg_affected_rows</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_numrows</function></entry>
|
||
<entry><function>pg_num_rows</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_numfields</function></entry>
|
||
<entry><function>pg_num_fields</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_fieldname</function></entry>
|
||
<entry><function>pg_field_name</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_fieldsize</function></entry>
|
||
<entry><function>pg_field_size</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_fieldnum</function></entry>
|
||
<entry><function>pg_field_num</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_fieldprtlen</function></entry>
|
||
<entry><function>pg_field_prtlen</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_fieldisnull</function></entry>
|
||
<entry><function>pg_field_is_null</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_freeresult</function></entry>
|
||
<entry><function>pg_free_result</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_result</function></entry>
|
||
<entry><function>pg_fetch_result</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_loreadall</function></entry>
|
||
<entry><function>pg_lo_read_all</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_locreate</function></entry>
|
||
<entry><function>pg_lo_create</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_lounlink</function></entry>
|
||
<entry><function>pg_lo_unlink</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_loopen</function></entry>
|
||
<entry><function>pg_lo_unlink</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_loclose</function></entry>
|
||
<entry><function>pg_lo_close</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_loread</function></entry>
|
||
<entry><function>pg_lo_read</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_lowrite</function></entry>
|
||
<entry><function>pg_lo_write</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_loimport</function></entry>
|
||
<entry><function>pg_lo_import</function></entry>
|
||
</row>
|
||
<row>
|
||
<entry><function>pg_loexport</function></entry>
|
||
<entry><function>pg_lo_export</function></entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
<para>
|
||
A antiga sintaxe <function>pg_connect</function>/<function>pg_pconnect</function>
|
||
será obsoleta para suportar conexões assíncronas no futoro. Por favor use
|
||
a string de conexão para <function>pg_connect</function>
|
||
e <function>pg_pconnect</function>.
|
||
</para>
|
||
</warning>
|
||
<para>
|
||
Nem todas as funções são suportadas por todas as compilações. Isso vai
|
||
depender da versão do seu libpq (A interface C do cliente PostgreSQL) e
|
||
como o seu libpq foi compilado. Se há alguma função ausente, a libpq não
|
||
suporta a característica exigida pela função.
|
||
</para>
|
||
<para>
|
||
Também é importante que você use uma libpq mais nova do que a que o
|
||
servidor espera. Se você usar uma libpq mais antiga do que a que o
|
||
servidor espera você poderá ter problemas.
|
||
</para>
|
||
<para>
|
||
Desde a versão 6.3 (03/02/1998) PostgreSQL usa sockets de domínio unix por
|
||
padrão. A porta TCP não será aberta por padrão. Uma tabela é mostrada
|
||
abaixo descrevendo essas novas possibilidades de conexão. Este socket será
|
||
encontrado em <filename>/tmp/.s.PGSQL.5432</filename>.
|
||
Espa opção pode ser habilitada com a chave '-i' para o
|
||
<command>postmaster</command> e seu significado é: "escute em sockets
|
||
TCP/IP assim como em sockets de domínio Unix".
|
||
<table>
|
||
<title>Postmaster e PHP</title>
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Postmaster</entry>
|
||
<entry>PHP</entry>
|
||
<entry>Status</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>postmaster &</entry>
|
||
<entry>pg_connect("dbname=MyDbName");</entry>
|
||
<entry>OK</entry>
|
||
</row>
|
||
<row>
|
||
<entry>postmaster -i &</entry>
|
||
<entry>pg_connect("dbname=MyDbName");</entry>
|
||
<entry>OK</entry>
|
||
</row>
|
||
<row>
|
||
<entry>postmaster &</entry>
|
||
<entry>pg_connect("host=localhost dbname=MyDbName");</entry>
|
||
<entry>
|
||
Unable to connect to PostgreSQL server: connectDB() failed:
|
||
Is the postmaster running and accepting TCP/IP (with -i)
|
||
connection at 'localhost' on port '5432'? in
|
||
/path/to/file.php on line 20.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>postmaster -i &</entry>
|
||
<entry>pg_connect("host=localhost dbname=MyDbName");</entry>
|
||
<entry>OK</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
</para>
|
||
<para>
|
||
Uma conexão com o servidor PostgreSQL pode ser estabelecida com os
|
||
seguintes pares de valores definidos na string de comando: <command>$conn =
|
||
pg_connect("host=meuHost port=minhaPorta tty=meuTTY options=minhasOpcoes
|
||
dbname=meuDB user=meuUsuario password=minhaSenha ");
|
||
</command>
|
||
</para>
|
||
<para>
|
||
A sintaxe anterior de:
|
||
<command>
|
||
$conn = pg_connect ("host", "porta", "opcoes", "tty", "nomebd")
|
||
</command>
|
||
está obsoleta.
|
||
</para>
|
||
<para>
|
||
Variáveis de ambiente afetam o comportamento do servidor/cliente
|
||
PostgreSQL. Por exemplo, o módulo PostgreSQL irá procurar pela variável de
|
||
ambiente PGHOST quando o nome de host é omitido na string de conexão. As
|
||
variáveis de ambiente suportadas variam de versão para versão. Vide o
|
||
Manual de PRogramador do PostgreSQL (Programmer´s Manual) na seção libpq -
|
||
Enviroment Variables para maiores detalhes.
|
||
</para>
|
||
<para>
|
||
Certifique-se que você definou as variáveis de ambiente para o usuário
|
||
apropriado. Use <literal>$_ENV</literal> ou <function>getenv</function>
|
||
para verificar que variáveis de ambiente estão disponíveis para o processo
|
||
atual.
|
||
</para>
|
||
<example>
|
||
<title>Definindo os parâmetros padrões</title>
|
||
<programlisting>
|
||
<![CDATA[
|
||
PGHOST=psgql.exmaple.com
|
||
PGPORT=7890
|
||
PGDATABASE=web-system
|
||
PGUSER=web-user
|
||
PGPASSWORD=secret
|
||
PGDATESTYLE=ISO
|
||
PGTZ=JST
|
||
PGCLIENTENCODING=EUC-JP
|
||
|
||
export PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD PGDATESTYLE PGTZ PGCLIENTENCODING
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
<para>
|
||
A partir do PostgreSQL 7.1.0, você pode armazenar até 1GB dentro de um
|
||
campo do tipo texto. Em versões mais antigas, isto era limitado ao tamanho
|
||
do bloco (padrão era 8KB e o máximo era 32KB definido em tempo de
|
||
compilação)
|
||
</para>
|
||
<para>
|
||
Para usar a interface de objetos grandes (lo), é exigido que se encapsule
|
||
as funções de objetos grandes dentro de um bloco de transação. Um bloco de
|
||
transação inicia-se com a declaração SQL <command>BEGIN</command> e se a
|
||
transação foi válida termina com <command>COMMIT</command> ou
|
||
<command>END</command>. Se a transaão falhar, ela deve ser fechada com
|
||
<command>ROLLBACK</command> ou <command>ABORT</command>.
|
||
<>
|
||
<title>Usando Objetos Grandes</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$database = pg_connect ("dbname=jacarta");
|
||
pg_query ($database, "begin");
|
||
$oid = pg_lo_create ($database);
|
||
echo "$oid\n";
|
||
$handle = pg_lo_open ($database, $oid, "w");
|
||
echo "$handle\n";
|
||
pg_lo_write ($handle, "large object data");
|
||
pg_lo_close ($handle);
|
||
pg_query ($database, "commit");
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
Você não deve fechar a conexão com o servidor PostgreSQL antes de fechar o
|
||
objeto grande.
|
||
</para>
|
||
</partintro>
|
||
|
||
&reference.pgsql.functions;
|
||
|
||
</reference>
|
||
<!-- 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:"../../../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
|
||
-->
|