Introdução
O
banco
de
dados
PostgreSQL
é
um
produto
de
código
aberto
e
disponível
gratuitamente
.
O
Postgres
,
desenvolvido
originalmente
no
Departamento
de
Ciência
de
Computação
da
Universidade
de
Berkeley
,
foi
pioneiro
em
muitos
dos
conceitos
objeto-relacionais
que
agora
estão
disponíveis
em
alguns
bancos
de
dados
comerciais
.
Fornece
suporte
a
linguagem
SQL92
/
SQL99
,
integridade
de
transações
e
extensibilidade
de
tipos
.
O
PostgreSQL
é
um
descendente
com
código
aberto
do
código
original
desenvolvido
em
Berkeley
.
Requisitos
Para
usar
usar
as
funções
para
PostgreSQL
,
você
precisa
do
PostgreSQL
6.5
ou
superior
e
PostgreSQL
7.0
ou
superior
para
habilitar
todos
os
recursos
deste
módulo
.
PostgreSQL
suporta
inúmeros
tipos
de
codificação
de
caracteres
incluindo
a
codificação
de
caracteres
multibyte
.
A
versão
mais
atual
e
mais
informações
sobre
PostgreSQL
estão
disponíveis
em
http
:
/
/www.postgresql.org
/
.
Instalação
Para
habilitar
o
módulo
de
funções
para
PostgreSQL
,
a
opção
de
configuração
--with-pgsql[
=DIR
]
deve
ser
usada
no
momento
da
compilação
do
PHP
.
Se
o
módulo
PostgreSQL
estiver
disponível
como
objeto
compartilhado
,
poderá
ser
carregado
usando
a
diretiva
extension
no
php.ini
ou
a
função
dl(
)
.
Configuração
durante
execução
O
comportamento
dessas
funções
podem
ser
modificado
pelas
configurações
do
php.ini
.
Tabela
1
.
Opções
de
configuração
do
PostgreSQL
Para mais detalhes e definições das constantes PHP_INI_*
veja
ini_set()
.
Aqui
está
uma
pequena
explicação
sobre
as
diretivas
de
configuração
.
-
pgsql.allow_persistent
boolean
-
Se
quer
ou
não
permitir
conexões
persistentes
com
o
PostgreSQL
.
-
pgsql.max_persistent
integer
-
O
número
máximo
de
conexões
persistentes
com
PostgreSQL
por
processo
.
-
pgsql.max_links
integer
-
O
número
máximo
de
conexões
PostgreSQL
por
processo
,
incluindo
as
persistentes
.
Como
usar
e
algumas
dicas
Atenção
|
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
notificações
.
Use
o
4.1.0
ou
superior
.
|
Atenção
|
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
(
underscore
)
adicionais
,
por
exemplo
,
pg_lo_open(
)
.
Algumas
funções
foram
renomeadas
para
uma
maior
consistência
,
por
exemplo
,
pg_exec(
)
mudou
para
pg_query(
)
.
Os
nomes
antigos
podem
ser
usados
na
4.2.0
e
em
algumas
poucas
outras
versões
após
esta
,
mas
eles
serão
removidos
futuramente
.
Tabela
2
.
Nomes
de
funções
alterados
A
antiga
sintaxe
pg_connect(
)
/
pg_pconnect(
)
ficará
obsoleta
para
suportar
conexões
assíncronas
no
futuro
.
Por
favor
,
use
a
string
de
conexão
para
pg_connect(
)
e
pg_pconnect(
)
.
|
Nem
todas
as
funções
são
suportadas
por
todas
as
compilações
.
Isso
vai
depender
da
versão
da
libpq
(
A
interface
cliente
em
C
para
PostgreSQL
)
e
como
esta
foi
compilada
.
Se
há
alguma
função
ausente
,
é
porque
a
libpq
não
suporta
a
característica
exigida
por
esta
função
.
Também
é
importante
que
você
use
uma
versão
da
libpq
mais
nova
do
que
a
que
o
servidor
exige
.
Se
você
usar
uma
versão
mais
antiga
do
que
a
que
o
servidor
espera
,
você
poderá
ter
problemas
.
Desde
a
versão
6.3
(
03
/
02
/
1998
)
,
o
PostgreSQL
usa
sockets
de
domínio
unix
por
padrão
.
A
porta
TCP
não
ficará
aberta
por
padrão
.
Uma
tabela
é
mostrada
abaixo
descrevendo
essas
novas
possibilidades
de
conexão
.
Este
socket
será
encontrado
em
/
tmp
/
.s.PGSQL.5432
.
Esta
opção
pode
ser
habilitada
com
o
parâmetro
'
-i
'
para
o
postmaster
e
seu
significado
é
:
"escute
em
sockets
TCP
/
IP
assim
como
em
sockets
de
domínio
Unix
"
.
Tabela
3
.
Postmaster
e
PHP
Uma
conexão
com
o
servidor
PostgreSQL
pode
ser
estabelecida
com
os
seguintes
pares
de
valores
definidos
na
string
de
comando
:
$conn
=
pg_connect(
"host=seuHost
port=suaPorta
tty=seuTTY
options=suasOpcoes
dbname=seuDB
user=seuUsuario
password=suaSenha")
;
A
sintaxe
anterior
:
$conn
=
pg_connect
(
"host"
,
"porta"
,
"opcoes"
,
"tty"
,
"nomebd"
)
ficará
obsoleta
.
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
.
Certifique-se
que
você
definiu
as
variáveis
de
ambiente
para
o
usuário
apropriado
.
Use
$_ENV
ou
getenv(
)
para
verificar
se
as
variáveis
de
ambiente
estão
disponíveis
para
o
processo
atual
.
Exemplo
1
.
Definindo
os
parâmetros
padrão
PGHOST=psgql.example.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
|
|
Constantes
Predefinidas
As
contantes
abaixo
são
definidas
por
esta
extensão
e
somente
estarão
disponíveis
quando
a
extensão
foi
compilada
com
o
PHP
ou
carregada
dinamicamente
durante
a
execução
.
Exemplos
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
(
o
padrão
era
8KB
e
o
máximo
era
32KB
,
definido
em
tempo
de
compilação
)
.
Para
usar
a
interface
de
objetos
grandes
(
large
objects
)
,
é
exigido
que
se
encapsule
as
funções
de
objetos
grandes
em
um
bloco
de
transação
.
Um
bloco
de
transação
inicia-se
com
a
declaração
SQL
BEGIN
e
,
se
a
transação
for
válida
,
termina
com
COMMIT
ou
END
.
Se
a
transação
falhar
,
ela
deve
ser
fechada
com
ROLLBACK
ou
ABORT
.
Exemplo
2
.
Usando
Objetos
Grandes
(
large
objects
)
|
Você não deve fechar a conexão com o servidor PostgreSQL
antes de fechar o objeto grande.