Home
Manual do Postgresql
Contents
1. Antes de remover um distribuidor ou de atualizar o seu c digo remover todas as refer ncias na tabela filmes CREATE TRIGGER se filme exist BEFORE DELETE OR UPDATE ON distribuidores FOR EACH ROW EXECUTE PROCEDURE verificar chave primaria 1 CASCADE did filmes did O segundo exemplo tamb m pode ser implementado usando uma chave estrangeira como em CREATE TABLE distribuidores did DECIMAL 3 nome VARCHAR 40 CREATE TRIGGER CONSTRAINT se filme exist FOREIGN KEY did REFERENCES filmes ON UPDATE CASCADE ON DELETE CASCADE Compatibilidade SQL92 N o existe o comando CREATE TRIGGER no SQL92 SQL99 O comando CREATE TRIGGER do PostgreSQL implementa um subconjunto do padr o SQL99 As seguintes funcionalidades est o faltando e O SQL99 permite os gatilhos dispararem quando da atualiza o de colunas espec ficas por exemplo AFTER UPDATE OF coll col2 e O SQL99 permite definir ali s para as linhas ou tabelas velha e nova para uso na defini o das a es do gatilho por exemplo CREATE TRIGGER ON nome tabela REFERENCING OLD ROW AS algum nome NEW ROW AS outro nome Como o PostgreSQL permite que os procedimentos dos gatilhos sejam escritos em qualquer lingua
2. Sinopse CREATE OPERATOR nome PROCEDURE nome da fun o LEFTARG tipo esquerdo RIGHTARG tipo direito COMMUTATOR op comutador NEGATOR op negador RESTRICT proc restr JOIN proc juncao HASHES MERGES SORT1 op ord esq SORT2 op ord dir LTCMP op menor que GTCMP op maior que Entradas name O operador a ser definido Veja abaixo os caracteres permitidos O nome pode ser qualificado pelo esquema como por exemplo CREATE OPERATOR meu esquema nome da fun o A fun o utilizada para implementar este operador tipo esquerdo O tipo do argumento do lado esquerdo do operador se houver Esta op o omitida em um operador un rio esquerdo tipo direito O tipo do argumento do lado direito do operador se houver Esta op o omitida em um operador un rio direito op comutador O comutador deste operador op negador O negador deste operador proc restr A fun o estimadora de seletividade de restri o para este operador proc juncao A fun o estimadora de seletividade de jun o para este operador HASHES Indica que este operador pode suportar uma jun o por hash MERGES Indica que este operador pode suportar uma jun o por mesclagem CREATE OPERATOR op ord esq Se este operador pode suportar uma jun o por mesclagem o operador menor que que ordena o tipo de dado do lado esquerdo deste op
3. SET Tue Feb 26 07 32 21 42834 2002 PST Definir a zona hor ria para a It lia observe que necess rio o uso de ap strofos para tratar os caracteres especi ais SET TIME ZO Europe Rome SELECT CURRENT_TIMESTAMP AS hoje hoje 2002 10 08 05 39 35 008271 02 Compatibilidade SQL92 SET TIME ZONE estende a sintaxe definida no SQL9x O SQL9x permite somente deslocamentos num ricos para a zona hor ria enquanto o PostgreSQL tamb m permite a utiliza o de cadeias de caracteres para especificar a zona hor ria Todas as outras funcionalidades do comando SET s o extens es do PostgreSQL See Also The function set config provides the equivalent capability See Miscellaneous Functions in the PostgreSQL User s Guide SET CONSTRAINTS Nome SET CONSTRAINTS especifica o modo de restri o da transa o corrente Sinopse SET CONSTRAINTS ALL restri o DEFERRED IMMEDIATE Descri o O comando SET CONSTRAINTS especifica o comportamento da avalia o da restri o na transa o corrente No modo IMMEDIATE imediato as restri es s o verificadas ao final de cada comando No modo DEFERRED postergado as restri es n o s o verificadas at a efetiva o commit da transa o Nota Este comando somente altera o comportamento das restri
4. Se v rios gatilhos do mesmo tipo estiverem definidos para o mesmo evento ent o ser o disparados na ordem alfab tica de seus nomes O SELECT n o modifica nenhuma linha portanto n o poss vel criar gatilhos para SELECT Regras e vis es s o mais apropriadas para este caso Consulte os cap tulos sobre SPI Interface de Programa o do Servidor e Gatilhos no Guia do Programador do PostgreSQL para obter mais informa es Notas Para criar um gatilho em uma tabela o usu rio deve possuir o privil gio TRIGGER na tabela Nas vers es anteriores a 7 3 do PostgreSQL era necess rio declarar as fun es dos gatilhos com retorno do tipo opaque em vez de trigger Para permitir a carga das c pias de seguran a antigas o comando CREATE TRIGGER vai aceitar fun es declaradas como retornando opaque mas vai exibir uma NOTICE e mudar o tipo declarado de retorno da fun o para trigger Na vers o atual gatilhos de declara o STATEMENT triggers n o est o implementados Consulte o comando DROP TRIGGER para obter informa es sobre como remover gatilhos Exemplos Antes de inserir ou atualizar uma linha da tabela filmes verificar se o c digo do distribuidor existe na tabela de distribuidores CREATE TRIGGER se dist existe BEFORE INSERT OR UPDATE ON filmes FOR EACH ROW EXECUTE PROCEDURE verificar chave primaria did distribuidores did
5. FETCH cod titulo did data prod tipo duracao gt gt gt 4 gt gt gt 0 gt 4 gt D0 gt gt 00 gt gt gt 00 gt 4 gt gt gt 0 gt 4 gt P 3903 48 Hrs 103 1982 10 22 A o 01 37 1 row fechar o cursor liahona e efetivar a transa o CLOSE liahona COMMIT WORK MOVE Compatibilidade SQL92 N o existe o comando MOVE no SQL92 Em vez disto o SQL92 permite usar o comando FETCH para buscar uma linha na posi o absoluta do cursor movendo implicitamente o cursor para a posi o correta NOTIFY Nome NOTIFY gera uma notifica o Sinopse NOTIFY nome Entradas nome da notifica o Condi o de notifica o a ser sinalizada Sa das NOTIFY Mostra que o comando NOTIFY foi executado Notify events Os eventos s o enviados para os clientes escutando se e como cada aplicativo cliente reage depende da sua programa o Descri o O comando NOTIFY envia um evento de notifica o para cada aplicativo cliente que tenha executado anterior mente o comando LISTEN nome da notifica o para a condi o de notifica o especificada no banco de dados corrente A notifica o passada para o cliente por um evento de notifica o inclui o nome da condi o de notifica o e o PID do processo servidor que est notificando Fica por conta do projetista do banco de dados definir os nomes d
6. AF AFGHANISTAN AL ALBANIA DZ ALGERIA ZM ZAMBIA ZW ZIMBABWE Ns Observe que os espa os em branco em cada linha s o na verdade o caractere de tabula o COPY Abaixo s o os mesmos dados escritos no formato bin rio em uma m quina Linux 1586 Os dados mostrados foram filtrados atrav s do utilit rio do Unix od c A tabela possui tr s campos o primeiro char 2 o segundo text o terceiro integer Todas as linhas possuem um valor nulo no terceiro campo 00000 P G B C 00020 NO NO NO dO 00040 A EFST STF O 00060 T A N 0 00100 377 Mv NO dO 0 0 0 0 0 Oo Oo 120 377 377 006 NO 140 G E R I 160 M 377 377 An 200 NO 377 377 006 220 I B A O O OG O OOG O O O o O G O DO OOOD O O OVO Compatibilidade SQL92 O No T7 No No No A No No B N o existe o comando COPY no SQL92 NO No 003 A NO No No NO W Ye NWS RT NE NO y0 003 AO Vo dO A E NO 377 377 006 L B A N D Z 371 37 Vo 003 NO 377 NO Z NO Z E dO A M wW 377 NO 377 n 377 G No I Ny SA B 37 377 No 377 H No A No 006 I VE 004 003 006 NO A N NO A NO dO NO dO NO dO A AO NO dO A sintaxe mostrada abaixo era utilizada nas vers es anteriores a 7 3 e ainda aceita COPY BINARY tabela WITH OIDS FROM nome do arquivo USING DELIMIT ERS stdin delimitador WITH NULL AS cad
7. cod CHARACTER 5 CONSTRAINT pk filmes PRIMARY KEY titulo CHARACTER VARYING 40 NOT NULL did DECIMAL 3 NOT NULL data prod DATE tipo CHAR 10 duracao INTERVAL HOUR TO MINUTE CREATE TABLE distribuidores did DECIMAL 3 PRIMARY KEY DEFAULT NEXTVAL serial nome VARCHAR 40 NOT NULL CHECK nome lt gt Criar uma tabela com uma matriz de 2 dimens es CREATE TABLE matriz2d matriz INTI Definir uma restri o de unicidade para a tabela filmes Restri es de unicidade de tabela podem ser definidas usando uma ou mais colunas da tabela CREATE TABLE filmes cod CHAR 5 titulo VARCHAR 40 did DECIMAL 3 data prod DATE tipo VARCHAR 10 duracao INTERVAL HOUR TO MINUTE CONSTRAINT producao UNIQUE data prod Definir uma restri o de coluna para verifica o CREATE TABLE distribuidores did DECIMAL 3 CHECK did gt 100 nome VARCHAR 40 CREATE TABLE Definir uma restri o de tabela para verifica o CREATE TABLE distribuidores did DECIMAL 3 nome VARCHAR 40 CONSTRAINT chk dist CHECK did gt 100 AND nome lt gt Definir uma restri o de chave prim ria para a tabela filmes Restri es de chave prim ria da tabela podem ser definidas usando uma ou mais colunas da tabela CREATE T
8. encontrado Dependendo do caractere seguinte certos outros textos s o substitu dos As substitui es definidas O nome completo do hospedeiro do servidor de banco de dados com o nome do dom nio ou local se a conex o for atrav s de um soquete do dom nio Unix ou ainda 1ocal dir name se o soquete do dom nio Unix n o estiver no local padr o da compila o ae 3 O nome do hospedeiro do servidor de banco de dados truncado ap s o primeiro ponto ou local se a conex o for atrav s de um soquete do dom nio Unix ae v O n mero da porta na qual o servidor de banco de dados est na espera a 5 O nome do usu rio que se est conectado n o o nome do usu rio do sistema operacional local Oy Sa O nome do banco de dados corrente G e6 99 Como mas a sa da ser til se o banco de dados for o banco de dados padr o E Se o usu rio corrente for um superusu rio do banco de dados ent o sen o gt o9 I 6 No prompt 1 normalmente mas se estiver no modo linha nica e cep se a sess o estiver desconectada do banco de dados o que pode acontecer se o Yconnect falhar No prompt 2 a segii ncia substitu da por 2 2 ap strofo ou aspas dependendo se o psql est aguardando mais entrada devido ao comando n o ter terminado ainda porque est dentro de um coment rio ou porque est entre ap strofos ou aspas
9. a DD A BL101 The Third Man 101 1949 12 23 Drama 01 44 BL102 The African Queen 101 1951 08 11 Romance 01 43 JL201 Une Femme est une Femme 102 1961 03 12 Romance 01 25 P 301 Vertigo 103 1958 11 14 A o 02 08 P 302 Becket 103 1964 02 03 Drama 02 28 Buscar a linha anterior FETCH BACKWARD 1 IN liahona cod titulo did data prod tipo duracao H P_301 Vertigo 103 1958 11 14 A o 02 08 fechar a consulta e efetivar o trabalho CLOSE liahona COMMIT WORK FETCH Compatibilidade SQL92 Nota O uso n o embutido de cursores uma extens o do PostgreSQL A sintaxe e a utiliza o dos cursores est sendo comparada com rela o forma embutida dos cursores definida no SQL92 O SQL92 permite o posicionamento absoluto de cursores para a busca FETCH e permite armazenar os resulta dos em vari veis explicitadas FETCH ABSOLUTE FROM cursor INTO vari vel ABSOLUTE O cursor deve ser posicionado na linha especificada pelo n mero absoluto Todos os n meros de linhas no PostgreSQL s o n meros relativos portanto esta funcionalidade n o suportada vari vel Vari vel do programa GRANT Nome GRANT concede privil gios de acesso Si
10. Descri o Atrav s do comando CREATE LANGUAGE um usu rio do PostgreSQL pode registrar uma nova linguagem proce dural em um banco de dados do PostgreSQL Depois podem ser definidos fun es e procedimentos de gatilhos nesta nova linguagem O usu rio deve possuir o privil gio de superusu rio do PostgreSQL para poder registrar uma nova linguagem O comando CREATE LANGUAGE associa o nome da linguagem com o tratador de chamadas call handler que respons vel por executar as fun es escritas nesta linguagem Consulte o Guia do Programador para obter mais informa es sobre os tratadores de chamadas das linguagens Observe que as linguagens procedurais s o locais a cada bancos de dados Para tornar uma linguagem dispon vel a todos os bancos de dados por padr o esta linguagem deve ser instalada no banco de dados templatel Par metros TRUSTED TRUSTED especifica que o tratador de chamadas para a linguagem seguro ou seja n o oferece a um usu rio sem privil gios qualquer funcionalidade para contornar as restri es de acesso Se esta palavra chave for omitida ao registrar a linguagem somente usu rios do PostgreSQL com privil gio de superusu rio v o poder usar esta linguagem para criar novas fun es PROCEDURAL Apenas informativo nome da linguagem O nome da nova linguagem procedural N o existe distin o entre letras min sculas e mai sculas Uma linguagem pro
11. HECK ean_checkdigit eanprefix ancode No pr ximo exemplo criada uma fun o que faz a convers o de tipo do tipo complexo definido pelo usu rio e o tipo nativo point A fun o implementada por um objeto carregado dinamicamente que foi compilado a partir de um fonte C est ilustrada a alternativa obsoleta de se especificar o caminho absoluto para o arquivo contendo o objeto compartilhado Para o PostgreSQL encontrar a fun o de convers o de tipo automaticamente a fun o SQL deve ter o mesmo nome do tipo retornado e por isso a sobrecarga inevit vel O nome da fun o sobrecarregado utilizando se a segunda forma da cl usula As na defini o SQL CREATE FUNCTION point complex RETURNS point AS home bernie pgsgl lib complex so complex to point ANGUAGE C STRICT CREATE FUNCTION A declara o em C da fun o poderia ser Point complex to point Complex z Point p p Point palloc sizeof Point p gt x z gt x p gt 2y Z gt Y return Pp Note que a fun o est marcada como strict o que evita verificar a entrada nula no corpo da fun o Compatibilidade O comando CREATE FUNCTION definido no SQL99 A vers o do PostgreSQL similar mas n o totalmente compat vel Os atributos n o s o port veis nem as diferentes linguagens dispon veis o s o Consulte tamb m DROP FUNCTION GRANT LOAD REVOKE
12. Os valores m nimo e m ximo est o inconsistentes Description O comando CREATE SEQUENCE cria um novo gerador de n meros seqiienciais no banco de dados em uso Este comando envolve a cria o e a inicializa o de uma tabela nova com uma nica linha com o nome nome seg O usu rio que executa o comando se torna o dono do gerador Se um nome de esquema for fornecido ent o a sequ ncia criada no esquema especificado sen o criada no esquema corrente aquele na frente do caminho de procura consulte o CURRENT SCHEMA As seqii ncias TEMP existem em um esquema especial portanto o nome do esquema n o pode ser fornecido ao se criar uma sequ ncia TEMP O nome da segii ncia deve ser diferente do nome de qualquer outra seqii ncia tabela ndice ou vis o no mesmo esquema Ap s a sequ ncia ser criada podem ser utilizadas as fun es next val currval e setval para trabalhar com a segii ncia Estas fun es est o documentadas no Guia do Usu rio Embora n o seja poss vel atualizar uma segii ncia diretamente poss vel realizar uma consulta do tipo SE H ECT FROM nome seg para conhecer os par metros e o estado atual da segii ncia Em particular o campo last value da segii ncia mostra o ltimo valor alocado por qualquer processo servidor E claro que este valor pode estar obsoleto na hora em que for exibido se outros processos estiverem chamando a fun
13. ADD defini o de restri o de tabela ALTER TABLE ONLY tabela DROP CONSTRAINT nome da restri o RESTRICT CASCADE ALTER TABLE tabela OWNER TO novo dono Entradas tabela MAIN O nome opcionalmente qualificado pelo esquema da tabela existente a ser alterada Se ONLY for especifi cado somente esta tabela alterada Se ONLY n o for especificado a tabela e todas as suas tabelas descen dentes se existirem ser o alteradas O pode ser apensado ao nome da tabela para indicar que as tabelas descendentes devem ser varridas mas na vers o atual este comportamento padr o Nas vers es anteriores a 7 1 ONLY era o comportamento padr o O padr o pode ser alterado mudando se a op o de configura o SQL INHERITANCE coluna O nome de uma coluna nova ou existente tipo O tipo da nova coluna novo nome da coluna O novo nome para a coluna existente novo nome da tabela O novo nome para a tabela defini o de restri o de tabela A nova restri o de tabela table constraint para a tabela nome da restri o O nome da restri o existente a ser exclu da novo dono O nome de usu rio do novo dono da tabela CASCADE ALTER TABLE Exclui automaticamente os objetos que dependem da coluna ou restri o exclu da por exemplo vis es que fazem refer ncia coluna RESTRICT Recusa excluir a coluna ou a restri o se existirem objetos dependent
14. CREATE GROUP PEE ros sis ater iniindascanba bass S canis EE 1 CREATE INDEX e ree ena la ae a e aaae E EE S EE E bs bjo Coast DU EE A SS 1 CREATE LANGUAGE vroee a EE E RTE Eer E EE E E E E EEA RT 1 CREATE OPERATOR aeiee eor Ee er E E E EEEE EE E EEE E ES EE EE 1 CREATE OPERATOR CLASS ra a rarr r a E e eaaa oa Ea a aap a a EE r a oE EE E Ere SEET seise 1 CREATE RUDE ne oan oseere aeae a e O AE A EE EEN a EEE E Lada Susto dois EIO 1 CREATE SCHEMA irer ra n E REE ES E E E R E E E E E E E E ET 1 CREATE SEQUENCE ienen e aE E E E E EE E E E E E EE 1 0a yada S aN s A DEEE EEE E T E 1 CREATE TABLE AS eteo e aa a a Boo E E EEEE E des a EEEE E KEE EES OIE 1 CREATE TRIGGER sinire a me E E ETE E e EEE E a E EE E a E 1 CREATE TYPE ae ae aor e rE S A O E E E E EE EE S E Eos land a 1 CREATE USER E E EEE E STEE 1 CREATE VIEW enor eoeta o aaae a Polio e e EE EEE E ENa O SE E EIO ES 1 DEAT LOCATE a a A RE A E A A E S ET RS 1 DECLARE ET EEEE E E EEEE E A ETETE E EEE TE 1 DELETE metes E E E A E E E R 1 PROPA OORE GATE A E E E E E ES 1 DROP OANT a A A O S a 1 PROP CONVERSION r r na ao OTR PAA pao SBN p enmen doa copos dad e t o aah ass 1 DROP DATABAS E nata ea ad ia Rapina sagas A ARN 1 DROP DOMAIN ci a a E A R E A E E E E 1 DROP FUNCTION E DOT A A NS ESNS 1 PROP GRO U P usares er arare omero a pe Srn a AE r E SNE OKEE A o Ee Spo as ENO qo sudo dus EEE ENE dra os ua asus dos 1 DROP INDEX a a E E a SS 1 DROP LANGUAGE m n a a E T A T N E E E E EES 1 iii
15. Diagn sticos Consulte os comandos CREATE TABLE e SELECT para obter um sum rio das poss veis mensagens de sa da Ez CREATE TABLE AS Notas Este comando funcionalmente equivalente ao SELECT INTO mas prefer vel porque menos propenso a ser confundido com outros usos da sintaxe do comando SELECT INTO Compatibilidade Este comando baseado em uma funcionalidade do Oracle N o existe nenhum comando com funcionalidade equivalente no SQL92 nem no SQL99 Entretanto uma combina o de CREATE TABLE com INSERT SELECT pode ser utilizada para produzir o mesmo resultado com um pouco mais de esfor o Hist rico O comando CREATE TABLE As est dispon vel desde o PostgreSQL 6 3 Consulte tamb m CREATE TABLE CREATE VIEW SELECT SELECT INTO CREATE TRIGGER Nome CREATE TRIGGER cria um gatilho Sinopse CREATE TRIGGER nome BEFORE AFTER evento OR 1 ON tabela FOR EACH ROW STATEMENT 3 EXECUTE PROCEDURE fun o argumentos Entradas nome O nome a ser dado ao novo gatilho Deve ser diferente do nome de qualquer outro gatilho para a mesma tabela evento Um entre INSERT DELETE e UPDATE tabela O nome opcionalmente qualificado pelo esquema da tabela em que o gatilho atua func Uma fun o fornecida pelo usu rio declarada como n o rec
16. Nome DEALLOCATE remove uma consulta preparada Sinopse DEALLOCATE PREPARE nome Entradas PREPARE Esta palavra chave ignorada nome O nome da consulta preparada a ser removida Sa das 5 EALLOCATE A consulta preparada foi removida com sucesso Descri o O comando DEALLOCATE utilizado para remover uma consulta preparada anteriormente Se uma consulta preparada n o for removida por um comando DEALLOCATE expl cito ent o ser removida no t rmino da sess o Para obter mais informa es sobre as consultas preparada consulte o comando PREPARE Compatibilidade SQL92 O SQL92 inclui o comando DEALLOCATE mas apenas para ser usado no SQL embutido nos clientes DECLARE Nome DECLARE define um cursor Sinopse DECLARE nome do cursor BINARY INSENSITIVE SCROLL CURSOR FOR consulta FOR READ ONLY UPDATE OF coluna 11 Entradas nome do cursor O nome do cursor a ser utilizado nas opera es de busca FETCH posteriores BINARY Faz com que o cursor busque os dados no formato bin rio em vez do formato texto INSENSITIVE Palavra chave do SQL92 indicando que os dados buscados pelo cursor n o devem ser afetados pelas atualiza es feitas por outros processos ou cursores Como as opera es do cursor ocorrem dentro de uma transa o no PostgreSQL este sempre o caso Esta palavra ch
17. REVOKE EXECUTE ALL PRIVILEGES ON FUNCTION nome da fun o Itipo FROM nome do usu rio GROUP nome do grupo PUBLIC REVOKE USAGE ALL PRIVILEGES ON LANGUAGE nome da linguagem FROM nome do usu rio GROUP nome do grupo PUBLIC REVOKE CREATE USAGE ALL PRIVILEGES ON SCHEMA nome do esquema FROM nome do usu rio GROUP nome do grupo PUBLIC Descri o O comando REVOKE permite ao criador de um objeto revogar as permiss es concedidas anteriormente a um ou mais usu rios ou grupos de usu rios A palavra chave PUBLIC refere se ao grupo de todos os usu rios definido implicitamente Note que um usu rio em particular possui a soma dos privil gios concedidos diretamente ao pr prio usu rio com os privil gios concedidos aos grupos de que for membro e com os privil gios concedidos a PUBLIC Da por exemplo revogar o privil gio de SELECT para PUBLIC n o significa necessariamente que todos os usu rios perdem o privil gio de SELECT sobre o objeto queles que receberam o privil gio diretamente ou atrav s de um grupo permanecem com o privil gio Consulte a descri o do comando GRANT para conhecer o significado dos tipos de privil gio Notas Use o comando z do psql para exibir os privil gios concedidos nos obj
18. Analogamente ao se sobrecarregar o nome das fun es SQL atrav s de v rias fun es escritas na linguagem C deve ser dado a cada inst ncia da fun o na linguagem C um nome distinto e ent o usar a forma alternativa da cl usula As na sintaxe do CREATE FUNCTION para selecionar a implementa o apropriada na linguagem C de cada fun o SQL sobrecarregada Quando chamadas repetidas ao comando CREATE FUNCTION fazem refer ncia ao mesmo arquivo objeto o ar quivo s carregado uma vez Para descarregar e carregar o arquivo talvez durante a fase de desenvolvimento use o comando LOAD Use o comando DROP FUNCTION para remover as fun es definidas pelo usu rio Para atualizar a defini o de uma fun o existente use o comando CREATE OR REPLACE FUNCTION Observe que n o poss vel mudar o nome ou os tipos dos argumentos da fun o desta forma se for tentado ser criada CREATE FUNCTION uma nova fun o distinta O comando CREATE OR REPLACE FUNCTION tamb m n o permite que se mude o tipo do valor retornado de uma fun o existente Para fazer isto a fun o deve ser removida e recriada Se a fun o for removida e recriada a nova fun o n o mais a mesma entidade que era antes ficar o inv lidas as regras vis es gatilhos etc existentes que faziam refer ncia antiga fun o Use o comando CREATE OR REPLACE FUNCTION para mudar a defini o
19. n o necess rio nem que seja um nome com uma sintaxe v lida pode ser qualquer cadeia de caracteres com at 63 caracteres Em algumas vers es anteriores do PostgreSQL o nome tinha que vir entre aspas quando n o correspondia a nenhum nome de tabela existente mesmo que sintaticamente fosse um nome v lido mas n o mais necess rio Nas vers es do PostgreSQL anteriores a 6 4 o PID do processo servidor que enviou a mensagem de notifica o era sempre o PID do processo servidor do pr prio cliente Ent o n o era poss vel distinguir entre as pr prias notifica es e as notifica es dos outros clientes nestas vers es antigas NOTIFY Utiliza o Configurar e executar a seqii ncia escutar notificar usando o psql LISTEN virtual NOTIFY virtual Asynchronous NOTIFY virtual from backend with pid 8448 received Compatibilidade SQL92 N o existe o comando NOTIFY no SQL92 PREPARE Nome PREPARE cria uma consulta preparada Sinopse PREPARE nome tipo de dado AS consulta Inputs nome Um nome arbitr rio dado para esta consulta preparada Deve ser nico dentro da mesma sess o sendo usado para executar ou remover uma consulta preparada anteriormente tipo de dado Sa das PR O tipo de dado do par metro da consulta preparada Para fazer refer ncia aos par metros na pr pria consulta preparada usa se 1 52 etc EPAR A consulta fo
20. encoding codifica o Define a codifica o do cliente se estiver sendo utilizada a codifica o multibyte Sem argumento este comando mostra a codifica o corrente f cadeia_de_ caracteres Define o separador de campos para a sa da de comando n o alinhada O padr o a barra vertical Consulte tamb m o pset para ver uma forma gen rica de definir as op es de sa da g nome _ do_arquivol comando Envia o buffer de entrada de comando corrente para o servidor e opcionalmente salva a sa da em nome do arquivo ou envia a sa da para uma outra she11 do Unix para executar o comando Um g puro e simples virtualmente igual ao ponto e v rgula Um g com argumento uma alternativa expressa para o comando o help ou Ah comando Fornece ajuda para a sintaxe do comando SQL especificado Se o comando n o for especificado ent o o psql ir listar todos os comandos para os quais a ajuda de sintaxe est dispon vel Se o comando for um asterisco ent o mostrada a ajuda de sintaxe para todos os comandos SQL Nota Para simplificar a digita o os comandos constitu dos por v rias palavras n o necessitam estar entre ap strofos Portanto pode se digitar help alter table NH Ativa o formato HTML de sa da da consulta Se o formato HTML j estiver ativado retorna ao formato de texto alinhado padr o Este comando existe por compatibilidade e conveni ncia mas veja no
21. como cst ring O modificador set of indica que a fun o retorna um conjunto de itens em vez de um nico item CREATE FUNCTION nome da linguagem O nome da linguagem em que a fun o est implementada Pode ser SQL C internal ou o nome de uma linguagem procedural criada pelo usu rio Consulte tamb m o aplicativo createlang Para manter a compatibilidade com as vers es anteriores o nome pode estar entre ap strofos IMMUTABLE STABLE VOLATILE Estes atributos informam ao sistema se seguro substituir v rias chamadas fun o por uma nica chamada para otimizar o tempo de execu o Deve ser especificado no m ximo um dos tr s atributos Se nenhum deles for especificado o padr o utilizar VOLATILE O atributo IMMUTABLE indica que a fun o sempre retorna o mesmo resultado quando s o fornecidos os mesmos valores para os argumentos ou seja n o faz consultas a bancos de dados ou de alguma outra forma utiliza informa es que n o estejam diretamente presentes nos par metros Se este atributo for usado qual quer chamada fun o com os mesmos argumentos pode ser imediatamente substitu da pelo resultado da fun o O atributo STABLE indica que dentro da mesma varredura da tabela a fun o retorna o mesmo resultado para os mesmos valores dos argumentos mas que este resultado pode variar entre comandos SQL Esta a sele o apropriada para as fun es cujos resultados dependem de consultas a banc
22. home silva bd privado CREATE DATABASE CREATE DATABASE Compatibilidade SQL92 N o existe o comando CREATE DATABASE no SQL92 Os bancos de dados s o equivalentes aos cat logos cuja cria o definidas pela implementa o CREATE DOMAIN Nome CREATE DOMAIN cria um dom nio Sinopse CREATE DOMAIN nome do dom nio AS tipo de dado DEFAULT express o padr o restri o p mes i onde restri o CONSTRAINT nome da restri o NOT NULL NULL Par metros nome do dom nio O nome opcionalmente qualificado pelo esquema do dom nio sendo criado tipo de dado O tipo de dado subjacente do dom nio podendo incluir especificadores de matrizes arrays Consulte o Guia do Usu rio para obter mais informa es sobre tipos de dados e matrizes arrays EFAULT express o_padr o A cl usula DEFAULT especifica o valor padr o para as colunas com o tipo de dado do dom nio O valor qualquer express o vari vel livre mas as subconsultas n o s o permitidas O tipo de dado da express o padr o deve corresponder ao tipo de dado do dom nio A express o padr o usada em toda opera o de inclus o que n o especifica o valor da coluna Se n o houver valor padr o para o dom nio o padr o NULL Nota Se o valor padr o for especificado para uma determinada coluna este valor padr o prevalece sobre qualquer valor padr o associado
23. o de locais alternativos para os bancos de dados especificados por caminhos absolutos Por isso pelo padr o somente uma vari vel de ambiente conhecida pelo gerenciador de banco de dados pode ser especificada para um local alternativo Consulte o Guia do Administrador do PostgreSQL para obter mais informa es Embora seja poss vel copiar outros bancos de dados al m do template1 especificando se seu nome como gabar ito n o se pretende pelo menos ainda que seja uma funcionalidade para COPY DATABASE de uso geral recomendado que os bancos de dados utilizados como gabarito sejam tratados como se fossem apenas de leitura Consulte o Guia do Administrador do PostgreSQL para obter mais informa es Utiliza o Para criar um banco de dados novo silva gt create database lusiadas Para criar um banco de dados novo na rea alternativa bd privado mkdir bd privado initlocation bd privado The location will be initialized with username silva This user will own all the files and must also own the server process Creating directory home silva bd privado Creating directory home silva bd privado base initlocation is complete psql silva Welcome to psgl the PostgreSQL interactive terminal Type Acopyright for distribution terms h for help with SQL commands for help on internal slash commands g or terminate with semicolon to execute query q to quit silva gt CREATE DATABASE outro lugar WITH LOCATION
24. o padr o do PostgreSQL mas n o as linguagens fornecidas por terceiros Embora as linguagens de programa o do servidor possam ser adicionadas diretamente usando v rios comandos SQL recomenda se o uso do createlang porque este realiza v rias verifica es e muito mais f cil de usar Consulte o comando CREATE LANGUAGE para obter informa es adicionais Op es O createlang aceita os seguintes argumentos de linha de comando nome da linguagem Especifica o nome da linguagem de programa o procedural a ser definida d nome bd dbname nome bd Especifica em qual banco de dados a linguagem deve ser adicionada O padr o usar o banco de dados com o mesmo nome do usu rio atual do sistema operacional e echo Exibe os comandos SQL sendo executados 1 list Exibe a rela o das linguagens instaladas no banco de dados de destino que deve ser especificado L diret rio Especifica o diret rio onde o interpretador da linguagem deve ser encontrado Normalmente o diret rio encontrado automaticamente esta op o tem por finalidade a depura o O createlang tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o 11 createlang h hospedeiro host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p porta po
25. o para usar o tipo correto Novos tipos de dado base podem ser de comprimento fixo e neste caso o comprimento interno um inteiro positivo ou podem ser de comprimento vari vel indicado por fazer comprimento interno igual a VARIABLE Internamente representado definindo typlen como 1 A representa o interna de todos os tipos de comprimento vari vel devem come ar por um n mero inteiro indicando o comprimento total deste valor do tipo Para indicar que o tipo uma matriz array especifica se o tipo dos elementos da matriz usando a palavra chave ELEMENT Por exemplo para definir uma matriz de inteiros de 4 bytes int4 especifica se ELEMENT int4 Mais detalhes sobre os tipos matriz s o mostrados abaixo Para indicar o delimitador a ser usado entre os valores na representa o externa das matrizes arrays deste tipo o delimitador pode ser especificado como um caractere espec fico O delimitador padr o a v rgula Observe que o delimitador est associado com o tipo de elemento da matriz e n o com a pr pria matriz Um valor padr o pode ser especificado quando o usu rio desejar que as colunas com este tipo de dado tenham um valor padr o diferente de NULL Especifica se o padr o com a palavra chave DEFAULT Este tipo de padr o pode ser substitu do por um cl usula DEFAULT expl cita declarada na coluna O sinalizador opcional PASSEDBYVALUE indica que os valores dest
26. passado por refer ncia ou passado por valor Estas duas disposi es s o deliberadas elas ajudam a melhorar a portabilidade dos arquivos embora problemas relacionados com a ordem dos bytes ou o formato do ponto flutuante podem impedir a troca de arquivos bin rios entre computadores Se os OIDs s o inclu dos no arquivo o campo OID segue imediatamente a palavra contador de campos um campo normal exceto que n o est inclu do no contador de campos Em particular possui um tipo comprimento isto permite tratar OIDs de 4 bytes versus 8 bytes sem muita dificuldade e permite os OIDs serem mostrados como NULL se por acaso for desejado Rodap do Arquivo O rodap do arquivo consiste em uma palavra intl6 contendo 1 sendo facilmente distingu vel da palavra contador de campos da tupla O leitor deve relatar um erro se a palavra contador de campos n o for 1 nem o n mero esperado de colunas fornecendo uma verifica o extra com rela o a perda de sincroniza o com os dados Utiliza o O exemplo a seguir copia uma tabela para a sa da padr o usando a barra vertical como delimitador de campo COPY paises TO stdout WITH DELIMITER Para copiar dados de um arquivo Unix para a tabela paises COPY paises FROM usrl proj bray sql paises txt Abaixo est um exemplo de dados apropriados para se copiar para a tabela a partir de stdin por isso possui a sequ ncia de termina o na ltima linha
27. 49 psgl q quiet Especifica que o psql deve trabalhar em sil ncio Por padr o s o exibidas mensagens de boas vindas e diversas outras mensagens informativas Se esta op o for usada nada disso acontece til em conjunto com com a op o c Dentro do psql pode se tamb m definir a vari vel QUIET para obter o mesmo efeito R separador record separator separador Usao separador como separador de registros Equivale a pset recordsep ua single step Executa no modo passo nico significando que ser solicitada uma confirma o antes de cada comando ser enviado para o servidor com a op o de cancelar a execu o Usado para depurar scripts S single line Executa no modo linha nica onde o caractere de nova linha termina o comando como o ponto e v rgula faz Nota Este modo fornecido para queles que insistem em us lo mas n o se encoraja a sua utiliza o Em particular se forem misturados comandos SQL e meta comandos na mesma linha a ordem de execu o nem sempre ser clara para o usu rio inexperiente FE tuples only 2 Desativa a impress o dos nomes das colunas e do rodap com o n mero de linhas do resultado etc E totalmente equivalente ao meta comando t T op es_de tabela table attr op es de tabela Permite especificar op es a serem colocadas dentro da tag table do HTML Veja pset para obter detal hes Faz com que o psql solicite o nome
28. ER jonas marcela EATE GROUP no SQL92 O conceito de roles similar ao de grupos CREATE INDEX Nome CREATE INDEX cria um ndice Sinopse CREATE UNIQUE INDEX nome do ndice ON tabela USING m todo de acesso coluna nome do operador WHERE predicado CREATE UNIQUE INDEX nome do ndice ON tabela USING m todo de acesso nome da fun o coluna nome do operador WHERE predicado Entradas UNIQUE Faz com que o sistema procure por valores duplicados na tabela quando o ndice criado se existirem dados na tabela e sempre que novos dados forem adicionados A tentativa de inserir ou de atualizar dados que produza um valor duplicado gera um erro nome do ndice O nome do ndice a ser criado O nome do esquema n o pode ser inclu do aqui o ndice sempre criado no mesmo esquema da tabela a que pertence tabela O nome opcionalmente qualificado pelo esquema da tabela a ser indexada m todo de acesso O nome do m todo de acesso a ser utilizado pelo o ndice O m todo de acesso padr o BTREE O Post greSQL implementa quatro m todos de acesso para os ndices BTREE uma implementa o das B trees de alta concorr ncia de Lehman Yao RTREE implementa R trees padr o utilizando o algoritmo de parti o quadr tica de Guttman HASH
29. Nome CREATE SEQUENCE cria um gerador de seqii ncia Sinopse CREATE TEMPORARY TEMP SEQUENCE nome seq INCREMENT incremento MINVALUE valor min IAXVALUE valor max START in cio CACHE cache CYCLE Mo Entradas TEMPORARY ou TEMP Se for especificado o objeto de seqii ncia criado somente para esta sess o e automaticamente eliminado ao t rmino da sess o Uma seqii ncia permanente com o mesmo nome caso exista n o ser vis vel nesta sess o enquanto a segii ncia tempor ria existir a menos que seja referenciada por um nome qualificado pelo esquema nome seg O nome opcionalmente qualificado pelo esquema da segii ncia a ser criada incremento 2 A cl usula INCREMENT incremento opcional Um valor positivo cria uma seq ncia ascendente en quanto um valor negativo cria uma seq ncia descendente O valor padr o um 1 valor min A cl usula opcional MINVALUE valor min determina o valor m nimo que a segii ncia pode gerar Por padr o 1 e 2 63 1 para sequ ncias ascendentes e descendentes respectivamente valor max A cl usula opcional MAXVALUE valor max determina o valor m ximo para a segii ncia Por padr o 2 63 1 e 1 para seqii ncias ascendentes e descendentes respectivamente in cio A cl usula opcional START in cio permite a seqii ncia iniciar com qualquer val
30. Sa das O comando FETCH retorna o resultado da consulta definida pelo cursor especificado As seguintes mensagens retornam quando a consulta falha WARNING PerformPortalFetch portal cursor not found Se o cursor n o tiver sido previamente declarado O cursor deve ser declarado dentro do bloco da transa o WARNING FETCH ABSOLUTE not supported using RELATIVE O PostgreSQL n o suporta o posicionamento absoluto do cursor ERROR FETCH RELATIVE at current position is not supported O SQL92 permite buscar repetitivamente o cursor em sua posi o corrente usando a sintaxe FETCH RELATIVE 0 FROM cursor O PostgreSQL atualmente n o suporta esta no o na verdade o valor zero reservado para indicar que todas as linhas devem ser buscadas equivalendo a especificar a palavra chave ALL Se a palavra chave RELATIVE for usada o PostgreSQL assume que o usu rio deseja o comportamento do SQL92 e retorna esta mensagem de erro Descri o O comando FETCH permite o usu rio buscar linhas usando um cursor O n mero de linhas buscadas especificado pelo Se o n mero de linhas remanescentes no cursor for menor do que ent o somente as linhas dispon veis s o buscadas Colocando se a palavra chave ALL no lugar do n mero faz com que todas as linhas restantes no cursor sejam buscadas As inst ncias podem ser buscadas para frente FORWARD e para tr s BACKWARD O padr
31. o usando o comando SET CONSTRAINTS O padr o NOT DEFERRABLE CREATE TABLE Somente restri es de chave estrangeira aceitam esta cl usula no momento Todos os outros tipos de restri o n o s o posterg veis INITIALLY IMMEDIATE OU INITIALLY DEFERRED Se uma restri o posterg vel esta cl usula especifica o momento padr o para verificar a restri o Se a re stri o INITIALLY IMMEDIATE ent o verificada ap s cada declara o Este o padr o Se a declara o INITIALLY DEFERRED ent o verificada apenas no final da transa o O momento de verifica o da restri o pode ser alterado pelo comando SET CONSTRAINTS Diagn sticos CREATE TABLE Mensagem retornada se a tabela for criada com sucesso ERROR Mensagem retornada se a cria o da tabela falhar Esta mensagem normalmente acompanhada por algum texto descritivo como ERROR Relation nome da tabela already exists que ocorre quando a tabela especificada existe no banco de dados Notas Sempre que uma aplica o faz uso dos OIDs para identificar linhas espec ficas de uma tabela recomendado criar uma restri o de unicidade para a coluna oid da tabela para garantir que os OIDs na tabela realmente identificam unicamente uma linha mesmo ap s o contador recome ar Evite assumir que os OIDs s o nicos entre tabelas se for necess rio um identificador ni
32. o em andamento quando chamado um de seus comandos internos N1o export Vlo import V1o unlink este precisa tomar alguma decis o arbitr ria Esta a o pode ser desfazer roll back al guma transa o que esteja em andamento efetivar esta transa o commit ou n o fazer nada Neste ltimo caso deve ser fornecido o bloco BEGIN TRANSACTION COMMIT ou o resultado n o ser previs vel geral mente resultando em que a a o desejada n o seja realizada em nenhum caso Para escolher o que se deseja fazer deve se definir esta vari vel como rollback commit ou nothing O padr o desfazer roll back a transa o Se for desejado carregar apenas um ou poucos objetos est tudo bem Entretanto se a inten o for transferir muitos objetos grandes aconselh vel fornecer um bloco de transa o expl cito em torno dos comandos ON ERROR STOP Por padr o se um script n o interativo encontrar um erro como um comando SQL ou um meta comando mal formado o processamento continua Este tem sido o comportamento tradicional do psql mas algumas vezes n o o desejado Se esta vari vel estiver definida o processamento do script vai terminar imediatamente Se o script for chamado por outro script este vai terminar da mesma maneira Se o script externo n o foi chamado por uma sess o interativa do psql mas usando a op o f o psql retorna um c digo de erro 3 para distinguir este caso das condi es de erro fatal
33. DELETE INSERT tabela O nome opcionalmente qualificado pelo esquema da tabela ou da vis o qual a regra se aplica condi o Qualquer express o condicional SQL retornando booleano A express o condicional n o pode fazer refer ncia a nenhuma tabela exceto new e old e n o pode conter fun es de agrega o consulta A consulta ou consultas causadora da a o pode ser um dos comandos SQL SELECT INSERT UPDATE DELETE OU NOTIFY Dentro da condi o e da a o os nomes especiais de tabela new e ola podem ser usados para fazer refer ncia aos valores da tabela referenciada O new v lido nas regras ON INSERT e ON UPDATE para se referir nova linha sendo inserida ou atualizada O o1d v lido nas regras ON UPDATE e ON DELETE para se referir linha existente sendo atualizada ou exclu da CREATE RULE Sa das CREATE RULE Mensagem retornada se a regra for criada com sucesso Descri o O comando CREATE RULE cria uma nova regra a ser aplicada tabela ou vis o especificada O comando CREATE OR REPLACE RULE cria uma nova regra ou substitui uma regra existente para a mesma tabela que tenha o mesmo nome O sistema de regras do PostgreSQL permite a defini o de uma a o alternativa a ser realizada para as inclus es atualiza es ou exclus es nas tabelas do banco de dados As regr
34. DROP OPERATOR ta a isgios pnssren Daian Ia oa asas GINGA AU ALSO A A SU o ola O Seade 1 DROP OPERATOR CLASS ree ie OR Sa e dad ja DU dao UR ada e dl a DU doa 1 DROP RULE na aan ain A E E A E AE AR A 1 DROP SCHEMA daon a a a A e cad cas A N AE 1 DROP SEQUENCE i a T A A EA eE A e S EE AEREE N ERS 1 DROP TABLE e a e a dna Cao a ea E dE cafona ivan opa AE E de PEATE N 1 DROP TRIGGER ieina it i E E E E E E E EE EER T EEE EE ESS 1 DROP TYPE sait er ra Te E E EE E TEE E E E R E A 1 DROP USER oeaiei r e RED E E T E E 1 JDI ELOI AA T DA AAE ET E ERTE 1 EN Disain e a a a e eaa a a A at aai tea ea a E eae Ee iEn 1 EXECU TE er iE E PCE E EEEE EO E ro ERE EAEE E E REAR A 1 EXPLAIN ES RR RR RPPN RR OR OP O N 1 FETCH E T E AREE 1 GRAN T oa la eE E E KEE e EE Ee EAE EE E E Ea N O EE EEEE 1 INSERT eio a E EE EE E E E E E R E R aR 1 LISTEN G e r e PRO NADO RR ERRO NR PENN RO a E E O 1 LOAD EAE EERE AT T E E R S smbbabai 1 LOCK E E E E E E E E E E E EEE 1 MOVE en a REA E E E E O E RA A E E R 1 NOTIEY an erre a ena E Er E EE E E E PE EE e e AR 1 PREPARE EEEE ETT T ARE 1 REINDEX vinr eeaeee Aaa eE ao a EEES EEn EE Oa apo Dotado Cla EE KEES 1 RESET oi poses AE TE ELE EE E IEN E A NE RENIE E R R 1 REVOKE sima is e r a A S E a A A aDa Panis ba EEa tal ta aa 1 LOIDE E EE T RTE E A A NUS aeb i sao 1 SELECT AE E E E E E ns cc dita DOS a posa 1 SELECF INTO a A E E RE EE EEEE Ab A AOE E E 1 S A K A E OD E A 1 SETCONS TRA N N e a a DIS DADO a a a e bao sin
35. ERROR Schema nome does not exist Esta mensagem ocorre quando o esquema especificado n o existe Descri o DROP SCHEMA remove esquemas de um banco de dados Um esquema somente pode ser removido por seu dono ou por um superusu rio Observe que o dono pode remover o esquema e portanto todos os objetos que este cont m mesmo que n o seja o dono de alguns dos objetos contidos no esquema DROP SCHEMA Notas Consulte o comando CREATE SCHEMA para obter informa es sobre como criar um esquema Utiliza o Para remover do banco de dados o esquema meu esquema junto com todos os objetos que est o contidos DROP SCHEMA meu esquema CASCADE Compatibilidade SQL92 O comando DROP SCHEMA totalmente compat vel com o SQL92 exceto que o padr o permite apenas um es quema ser removido por comando DROP SEQUENCE Nome DROP SEQUENCE remove uma segii ncia Sinopse DROP SEQUENCE nome CASCADE RESTRICT Entradas nome O nome opcionalmente qualificado pelo esquema da segii ncia CASCADE Remove automaticamente os objetos que dependem da segii ncia RESTRICT Recusa remover a segii ncia se existirem objetos dependentes Este o padr o Sa das DROP SEQUENCE Mensagem retornada se a sequ ncia for removida com sucesso ERROR sequence nome does not exist Esta mensagem ocorre quando a segii
36. Em vez disso use O NOTIFY para acordar os aplicativos que devam prestar aten o em algo e use um objeto do banco de dados como uma segii ncia para registrar o que aconteceu ou quantas vezes aconteceu comum para um cliente que executa o NOTIFY estar escutando o mesmo nome de notifica o Neste caso vai ser recebido de volta o evento de notifica o da mesma maneira que todos os outros clientes na escuta Dependendo da l gica do aplicativo isto pode resultar em um trabalho sem utilidade por exemplo a releitura da tabela do banco de dados para encontrar as mesmas atualiza es que foram feitas No PostgreSQL 6 4 e nas vers es posteriores poss vel evitar este trabalho extra verificando se o PID do processo servidor que fez a notifica o fornecido na mensagem do evento de notifica o o mesmo PID do seu processo servidor dispon vel pela libpg Quando forem id nticos o evento de notifica o o seu pr prio trabalho retornando podendo ser ignorado A despeito do que foi dito no par grafo precedente esta uma t cnica segura O PostgreSQL mant m as auto notifica es separadas das notifica es vindas de outros processos servidores portanto n o poss vel perder se uma notifica o externa ignorando se as pr prias notifica es Notas nome pode ser qualquer cadeia de caracteres v lida como um nome n o necess rio que corresponda ao nome de qualquer tabela existente Se nome estiver entre aspas
37. O padr o para o n mero da porta 5432 ou o valor da vari vel de ambiente PGPORT se estiver definida U nome do usu rio Nome do usu rio para se conectar 44 pg_restore W For a a solicita o da senha Deve acontecer automaticamente se o servidor requerer autentica o por senha Ambiente PGHOST PGPORT PGUSER Par metros padr o para a conex o e Ed e Diagn sticos Connection to database templatel failed connectDBStart connect failed No such file or directory Is the postmaster running locally and accepting connections on Unix socket tmp s PGSQL 5432 O pg restore n o p de se conectar ao servidor PostgreSQL usando o computador e a porta especificada Se esta mensagem for recebida deve se garantir que o servidor est processando na m quina especificada e usando a porta especificada Se a instala o usa um sistema de autentica o assegure se de ter obtido as credenciais de autentica o necess rias Nota Quando uma conex o direta ao banco de dados especificada atrav s da op o d o pg restore executa internamente os comandos SQL Se houver problema ao executar o pg restore deve se ter certeza de poder consultar as informa es no banco de dados usando por exemplo o psql Notas Se na instala o houver alguma adi o local ao banco de dados templatel deve se ter o cuidado de restaurar a sa da do pg restore em um banco de dados realmente vazio de outra forma podem aconte
38. Para executar este comando o usu rio corrente deve ser o dono da tabela para a qual o gatilho est definido DROP TRIGGER Exemplos Remover o gatilho se dist existe da tabela filmes DROP TRIGGER se dist existe ON filmes Compatibilidade SQL92 N o existe o comando DROP TRIGGER no SQL92 SQL99 O comando DROP TRIGGER do PostgreSQL n o compat vel com o SQL99 No SQL99 os nomes dos gatilhos n o s o locais s tabelas portanto o comando simplesmente DROP TRIGGER nome Consulte tamb m CREATE TRIGGER DROP TYPE Nome DROP TYPE remove um tipo de dado definido pelo usu rio Sinopse DROP TYPE nome do tipo CASCADE RESTRICT Entradas nome do tipo O nome opcionalmente qualificado pelo esquema de um tipo existente CASCADE Remove automaticamente os objetos que dependem do tipo como colunas de tabelas fun es operadores etc RESTRICT Recusa remover o tipo se existirem objetos dependentes Este o padr o Sa das DROP TYPE Mensagem retornada se o comando for executado com sucesso ERROR RemoveType type nome do tipo does not exist Esta mensagem ocorre quando o tipo especificado n o encontrado Descri o O comando DROP TYPE remove um tipo do usu rio dos cat logos do sistema Somente o dono do tipo pode remov lo DROP TYPE Exemplos Para remover o tipo caixa DROP TYPE caixa Compatibilidade O
39. c digo de erro 1 PORT A porta do servidor de banco de dados que se est conectado Definida toda vez que se conecta ao banco de dados inclusive na inicializa o mas a defini o pode ser removida PROMPT1 PROMPT2 PROMPT3 Especificam como os prompts emitidos pelo psql devem se parecer Veja Prompt below 63 psql QUIET Esta vari vel equivalente op o de linha de comando q Provavelmente n o muito til no modo interativo SINGLELINE Esta vari vel definida pela op o de linha de comando s Pode ser redefinida ou ter a defini o removida em tempo de execu o SINGLESTEP Esta vari vel equivalente op o de linha de comando s USER O usu rio do banco de dados que se est conectado Definida toda vez que se conecta ao banco de dados inclusive na inicializa o mas a defini o pode ser removida Interpola o SQL Uma funcionalidade bastante pr tica das vari veis do psql que podem ser substitu das interpoladas dentro de comandos regulares do SQL A sintaxe para isto novamente prefixar a vari vel com dois pontos testdb gt set foo minha tabela testdb gt SELECT FROM foo faria ent o a consulta tabela minha tabela O valor da vari vel copiado literalmente podendo portanto con ter ap strofos n o balanceados ou comandos de contrabarra Deve se ter certeza que faz sentido onde colocada A
40. linha Entretanto estas representa es n o ser o aceitas por padr o nas vers es futuras Observe que o fim de cada linha marcado por um caractere de nova linha no estilo Unix An Atualmente o COPY FROM n o se comporta de forma adequada quando o arquivo especificado cont m o fim de linha no estilo MS DOS ou Mac Espera se que isto mude em vers es futuras Formato Bin rio O formato do arquivo usado pelo COPY BINARY mudou no PostgreSQL v7 1 O novo formato do arquivo consiste em um cabe alho zero ou mais tuplas e um rodap Cabe alho do Arquivo O cabe alho do arquivo consiste de 24 bytes para campos fixos seguidos por uma rea de extens o do cabe alho de tamanho vari vel Os campos fixos s o Assinatura A seqii ncia de 12 bytes PGBCOPY n 377 r n 0 observe que o nulo uma parte requerida da assinatura A assinatura foi projetada para permitir a f cil identifica o de arquivos corrompidos por uma transfer ncia n o apropriada Esta assinatura modificada por filtros de tradu o de nova linha nulos suprimidos bits altos suprimidos ou mudan as de paridade COPY Campo de disposi o de inteiro Constante int32 0x01020304 na ordem dos bytes da origem Se uma ordem errada dos bytes for detectada aqui o leitor poder se envolver em uma mudan a na ordem dos bytes dos campos posteriores Campo de sinalizadores M scara de bits int32 usada para caracterizar aspectos importantes do formato
41. no Linux o di ret rio usr share zoneinfo cont m o banco de dados de zonas hor rias os nomes dos arquivos deste diret rio podem ser usados como par metro para este comando Se uma zona hor ria inv lida for especificada a zona hor ria torna se GMT na maioria dos sistemas Se a vari vel de ambiente PGTZ tiver valor definido numa esta o do cliente baseada na 1ibpq automatica mente a libpq executa SET TIMEZONE para o valor de PGTZ durante a inicializa o da conex o Use o comando SHOW para mostrar o valor correntes definido para um par metro Diagn sticos op EI H Mensagem retornada se o comando for executado com sucesso ERROR nome is not a valid option name E o E o O par metro que se tentou definir n o existe ROR nome permission denied E necess rio ser um superusu rio para alterar certas defini es ROR nome cannot be changed after server start Certos par metros n o podem ser mudados ap s o servidor ter sido inicializado Exemplos Definir o estilo de data tradicional do PostgreSQL com conven es europ ias SET DATESTYLE TO PostgreSQL European Definir a zona hor ria para Berkeley Calif rnia usando ap strofos para preservar os atributos mai sculos do nome da zona hor ria note que o formato da data hora PostgreSQL neste exemplo SET TIME ZONE PST8PDT SELECT CURRENT TIMESTAMP AS hoje hoje
42. nteses estabele am outra ordem EXCEPT possui o mesmo n vel de preced ncia de UNION A cl usula LIMIT LIMIT contador ALL 3 OFFSET in cio onde contador especifica o n mero m ximo de linhas retornadas e in cio especifica o n mero de linhas a serem saltadas antes de come ar a retornar as linhas O contador LIMIT permite que seja retornada apenas uma parte das linhas que s o geradas pelo resultado da consulta Se um contador limite for fornecido n o ser retornado mais do que este n mero de linhas Se um deslocamento for especificado este n mero de linhas ser saltado antes de come ar o retorno das linhas Quando LIMIT usado aconselha se utilizar a cl usula ORDER BY para colocar as linhas do resultado dentro de uma ordem nica De outra maneira ser obtido um subconjunto das linhas da consulta imposs vel de ser previsto pode se estar querendo obter da d cima a vig sima linha mas da d cima a vig sima linha de qual ordena o N o poss vel saber qual ser a ordena o a menos que ORDER BY seja especificado A partir do PostgreSQL 7 0 o otimizador de consultas leva LIMIT em considera o ao gerar o plano para a consulta ent o muito prov vel que sejam obtidos planos diferentes resultando em ordena es diferentes das linhas dependendo do que seja fornecido para LIMIT e OFFSET Portanto utilizar valores diferentes para SELECT LIMIT OFFSET para selecionar subconjuntos diferentes do resul
43. o para frente Dica permitido especificar n meros negativos para o contador de linhas Um n mero negativo equivale a inverter o sentido das palavras chave FORWARD e BACKWARD Por exemplo FORWARD 1 o mesmo que BACKWARD 1 FETCH Notas Note que as palavras chave FORWARD e BACKWARD s o extens es do PostgreSQL A sintaxe do SQL92 tam b m suportada especificando se a segunda forma do comando Veja abaixo para obter detalhes sobre quest es de compatibilidade A atualiza o de dados pelo cursor n o suportada pelo PostgreSQL porque mapear as atualiza es do cursor de volta para as tabelas base geralmente n o poss vel como no caso das atualiza es nas vis es Consegiiente mente os usu rios devem executar um comando UPDATE expl cito para atualizar os dados Os cursores somente podem ser usados dentro de transa es porque os dados por eles armazenados estendem se por muitas consultas dos usu rios Use o comando MOVE para mudar a posi o do cursor O comando DECLARE define um cursor Consulte os comando BEGIN COMMIT e ROLLBACK para obter mais detalhes sobre transa es Utiliza o O exemplo a seguir acessa uma tabela usando um cursor Definir e usar o cursor BEGIN WORK DECLARE liahona CURSOR FOR SELECT FROM filmes Buscar as 5 primeiras linhas do cursor liahona FETCH FORWARD 5 IN liahona cod titulo did data prod tipo duracao
44. rio que pode modificar todas as restri es de acesso Se esta cl usula for omitida o valor deste atributo para o usu rio ser NOCR EAT EUS ER O nome do grupo onde o usu rio ser inclu do como um novo membro Nomes de v rios grupos podem estar presentes data_hora Diagn sticos A cl usula VALID UNTIL define uma data e hora ap s a qual a senha do usu rio n o mais v lida Se esta cl usula for omitida a conta ser v lida para sempre CR EATE US ER Mensagem retornada se o comando for executado com sucesso Notas Use o comando ALTER USER para mudar os atributos do usu rio e DROP USER para remover o usu rio Use ALTER GROUP para incluir ou remover o usu rio em grupos O PostgreSQL possui o aplicativo createuser que tem a mesma funcionalidade deste comando na verdade chama este comando mas que pode ser executado a partir da linha de comando CREATE USER Exemplos Criar um usu rio sem senha CREATE USER jonas Criar um usu rio com senha CREATE USER manuel WITH PASSWORD jw8s0F4 Criar um usu rio com senha cuja conta seja v lida at o fim de 2001 Observe que no primeiro instante de 2002 esta conta n o ser mais v lida CREATE USER miriam WITH PASSWORD jw8s0F4 VALID UNTIL Jan 1 2002 Criar uma conta onde o usu rio pode criar bancos de dados CREATE U
45. s a outra em qualquer ordem deixaria Notas O n vel de isolamento padr o da transa o tamb m pode ser definido pelo comando SET default transaction isolation valor no arquivo de configura o Consulte o Guia do Administrador para obter mais informa es SET TRANSACTION Compatibilidade SQL92 SQL99 SERIALIZABLE o n vel de isolamento padr o do SQL O PostgreSQL n o possui os n veis de isolamento READ UNCOMMITTED e REPEATABLE READ Devido ao controle de concorr ncia multi vers o o n vel SERIALIZABLE n o verdadeiramente serializ vel Consulte o Guia do Usu rio para obter mais informa es No SQL existem outras duas caracter sticas da transa o que podem ser definidas com este comando se a transa o de leitura apenas e o tamanho da rea de diagn sticos Nenhum destes conceitos suportado pelo PostgreSQL SHOW Nome SHOW mostra o valor de um par metro de tempo de execu o Sinopse SHOW nome SHOW ALL Entradas nome O nome de um par metro de tempo de execu o Consulte o comando SET para ver a rela o ALL Mostra todos os par metros da sess o corrente Descri o O comando sHow mostra o valor corrente de um par metro de tempo de execu o Estas vari veis podem ser definidas pelo comando SET editando se o arquivo postgresgl conf atrav s da vari vel de ambiente PGOPTIONS ou atrav s de uma op o de linha d
46. uma implementa o das dispers es lineares de Litwin GIST Generalized Index Search Trees rvores de Procura de ndice Generalizadas coluna O nome de uma coluna da tabela CREATE INDEX ops name Uma classe de operador associada Veja abaixo para obter mais detalhes nome da fun o Uma fun o que retorna um valor que pode ser indexado predicado Define a express o da restri o constraint para o ndice parcial Sa das CREATE INDEX Mensagem retornada se o ndice for criado com sucesso td zo ROR Cannot create index nome do ndice already exists Este erro ocorre se for imposs vel criar o ndice Descri o O comando CREATE INDEX constr i o ndice nome do ndicena tabela especificada Dica Os ndices s o utilizados principalmente para melhorar o desempenho do banco de dados mas a utiliza o n o apropriada causa uma degrada o do desempenho Na primeira sintaxe exibida acima os campos chave para o ndice s o especificados como nomes de coluna V rios campos podem ser especificados se o m todo de acesso do ndice suportar ndices com m ltiplas colunas Na segunda sintaxe exibida acima o ndice criado usando o resultado da fun o definida pelo usu rio nome da fun o aplicada sobre uma ou mais colunas de uma nica tabela Estes ndices funcionais podem ser utilizados para obter acesso r pido aos dados baseado em operadores qu
47. vel de configura o especificada como o valor fornecido Se valor for DEFAULT ou de forma equivalente se RESET for usado a defini o da vari vel para o usu rio espec fico removida e o valor padr o global do sistema ser herdado para as novas sess es do usu rio Use RESET ALL para apagar todas as defini es Consulte o comando SET e o Guia do Administrador para obter mais informa es sobre os nomes e valores permitidos para as vari veis Diagn sticos ALTER USER Mensagem retornada se a altera o for realizada com sucesso ERROR ALTER USER user nome do usu rio does not exist Mensagem retornada quando o usu rio especificado n o existir no banco de dados Notas Use o comando CREATE USER para criar um novo usu rio e o comando DROP USER para remover um usu rio O comando ALTER USER n o pode mudar a participa o do usu rio nos grupos Use o comando ALTER GROUP para realizar esta opera o Utilizando se o comando ALTER DATABASE tamb m poss vel associar a um banco de dados espec fico em vez de associar a um usu rio o valor padr o para a sess o ALTER USER Exemplos Mudar a senha do usu rio ALTER USER marcos WITH PASSWORD huSjmn3 Mudar a data de expira o da senha do usu rio ALTER USER manuel VALID UNTIL Jan 31 2030 Mudar a data de expira o da senha do usu rio especificando que sua
48. 1ast value reflete o ltimo valor reservado por qualquer servidor inde pendentemente de ter sido ou n o retornado por uma chamada fun o next val Outra considera o a ser feita que a fun o setval executada neste tipo de sequ ncia n o vai fazer efeito em outro servidor at que este tenha utilizado todos os valores pr alocados em mem ria Notas Use o comando DROP SEQUENCE para excluir uma segii ncia As segii ncias s o baseadas em aritm tica de tipo bigint por isso a faixa de valores n o pode ultrapassar a faixa permitida para n meros inteiros de 8 bytes 9223372036854775808 a 9223372036854775807 Em algumas plataformas mais antigas pode n o haver suporte do compilador para n meros inteiros de 8 bytes e neste caso as segii ncias utilizam aritm tica para o tipo regular integer faixa de valores de 2147483648 a 2147483647 Quando o valor para cache maior do que 1 cada servidor utiliza sua pr pria mem ria para armazenar os n meros pr viamente alocados Os n meros armazenados em mem ria mas n o utilizados pela sess o atual s o perdidos ocasionando uma seqii ncia cheia de buracos Utiliza o Criar uma segii ncia ascendente chamada serial come ando por 101 CREATE SEQUENCE serial START 101 Selecionar o pr ximo valor desta segii ncia SELECT nextval serial nextval Utilizar esta segii ncia em um comando INSERT INSERT INTO d
49. DELETE E remove tabelas do banco de dados Somente o criador pode remover a tabela A tabela O comando DROP ABLI E sempre remove todos os ndices regras gatilhos e restri es existentes na tabela En tretanto para remover uma tabela que referenciada por uma restri o de chave estrangeira de outra tabela o CASCADE deve ser especificado O CASCADE remove a restri o de chave restrangeira e n o a tabela Notas DROP TABLE Consulte os comandos CREATE TABLE e ALTER TABL tabelas Utiliza o Destruir as tabelas filmes e distribuidores DROP TABLE filmes distribuidores Compatibilidade SQL92 E para obter informa es sobre como criar e modificar DROP TRIGGER Nome DROP TRIGGER remove um gatilho Sinopse DROP TRIGGER nome ON tabela CASCADE Zy ESTRICT Entradas nome O nome de um gatilho existente tabela O nome opcionalmente qualificado pelo esquema de uma tabela CASCADE Remove automaticamente os objetos que dependem do gatilho RESTRICT Recusa remover se existirem objetos dependentes Este o padr o Sa das DROP TRIGGER Mensagem retornada se o gatilho for removido com sucesso ERROR DropTrigger there is no trigger nome on relation tabela Esta mensagem ocorre quando o gatilho especificado n o existe Descri o O comando DROP TRIGGER remove uma defini o de gatilho existente
50. Especifica o modo de parar shutdown O modo pode ser smart fast ou immediate ou a primeira letra de um desses tr s 0 op es Especifica op es a serem passadas diretamente para o postmaster Os par metros geralmente s o envoltos por ap strofos ou aspas para garantir que s o passados como um grupo p caminho Especifica a localiza o do arquivo execut vel postmaster Por padr o o postmaster pego do mesmo diret rio do pg ctl ou se falhar do diret rio de instala o N o necess rio usar esta op o a menos que esteja se fazendo algo diferente do usual e recebendo uma mensagem de erro informando que o postmaster n o foi encontrado Mostra somente os erros sem nenhuma mensagem informativa W Aguarda o in cio ou a parada terminar Espera no m ximo 60 segundos Este o padr o para a parada N o aguarda o in cio ou a parada terminar Este o padr o para o in cio e o re nicio Ambiente PGDATA Localiza o padr o do diret rio de dados Para os demais consulte o postmaster Arquivos Se o arquivo postmaster opts default existir no diret rio de dados o conte do deste arquivo ser passado como op es para o postmaster a menos que seja substitu do pela op o o 82 pe_ctl Notas Aguardar o t rmino do in cio n o uma opera o bem definida podendo falhar se o controle de acesso for definido de uma maneira que o cliente n o possa se conectar sem interven o
51. Este o nico tipo de privil gio aplic vel s fun es Esta sintaxe tamb m funciona para as fun es de agrega o da mesma maneira USAGE Para as linguagens procedurais permite a utiliza o da linguagem especificada para a cria o de fun es nesta linguagem Este o nico tipo de privil gio aplic vel s linguagens procedurais Para os esquemas permite o acesso aos objetos contidos no esquema especificado assumindo se que os priv il gios necess rios nos pr prios objetos est o atendidos Permite essencialmente quem recebe a concess o enxergar os objetos contidos no esquema ALL PRIVILEGES Concede todos os privil gios aplic veis ao objeto de uma s vez A palavra chave PRIVILEGES opcional no PostgreSQL entretanto requerida pelo SQL estrito GRANT Os privil gios requeridos pelos outros comandos est o listados nas p ginas de refer ncia dos respectivos coman dos Notas O comando REVOKE utilizado para revogar os privil gios de acesso Deve se observar que os superusu rios do banco de dados podem acessar todos os objetos a despeito dos priv il gios definidos Este comportamento pode ser comparado aos direitos do usu rio root no sistema operacional Unix Assim como no caso do root n o aconselh vel operar como um superusu rio a n o ser que seja absolu tamente necess rio Atualmente para se conceder privil gios somente para algumas colunas no PostgreSQL
52. INTO tabela coluna 1 DEFAULT VALUES VALUES express o DEFAULT SELECT consulta Entradas tabela O nome opcionalmente qualificado pelo esquema de uma tabela existente coluna O nome de uma coluna da tabela DEFAULT VALUES Todas as colunas s o preenchidas com nulo ou pelos valores especificados quando a tabela criada usando a cl usula DEFAULT express o Uma express o ou valor v lido a ser atribu do coluna DEFAULT Esta coluna ser preenchida pela cl usula DEFAULT da coluna ou NULL se um valor padr o n o estiver definido consulta Uma consulta v lida Consulte o comando SELECT para obter uma descri o mais detalhada dos argumentos v lidos Sa das INSERT oid 1 Mensagem retornada se apenas uma linha for inclu da O identificador do objeto oid o OID num rico da linha inclu da INSERT 0 Mensagem retornada se mais de uma linha for inclu da O representa o n mero de linhas inclu das INSERT Descri o O comando INSERT permite a inclus o de novas linhas na tabela Pode ser inclu da uma linha de cada vez ou v rias linhas resultantes de uma consulta As colunas da lista de inser o podem estar em qualquer ordem As colunas que n o aparecem na lista de inser o s o inclu das utilizando o valor padr o seja o valor DEFAULT declarado ou nulo O PostgreSQL rejeita a nova coluna se um valor nulo for incl
53. K a WEEE EENE fodendo sao aaa ra Dado Ab doada dota DAS Do do do corda SR ada pao Aos dad pon 70 Potksh ssa e aca dani na ST no ag siena aaa 71 Vactumd Dern r A a E A A E A A a E A AEE E 712 HI Aplicativos para o servidor do PostgreSQL e sesessesessesoesessesessosossesosoesosoesessosossosoesessosessesossesoesessssossesosses 75 SEATO o ETTER EEE E ORA RIR 76 initlocat onee a NE EN aeee a E E E Ea RR ORE RP O RE RR PEA 79 1 2 970 oro n EEE E ESFE T TAA 80 Pen n E ico E E E E 81 pe controldata hoiei En E E S E E EAEE E EE S EAEE T E dana Saad 85 po reselog na r E A E E EEA EE E E E E E ES 86 OOIT An EERTE E TT rb a E TaR DE v E ESRTE ba Ea Sd di cosa SUS ASO padnio CEeRS dia 88 PoStmaster c rrer anea io eo aeeoea E E E a E E E E A des Rss lana EU SE es dans puc dana coesa 92 Pref cio As entradas deste Manual de Refer ncia se prop em a fornecer um resumo completo e formal dos respectivos assuntos Mais informa es sobre a utiliza o do PostgreSQL sob forma narrativa de tutorial ou de exemplos podem ser encontradas em outras partes do conjunto de documentos do PostgreSQL Veja as refer ncias cruzadas listadas em cada p gina de refer ncia As informa es contidas no Manual de Refer ncia tamb m est o dispon veis no formato man pages do Unix Projeto PostgreSQL Br O centro de informa es para os usu rios brasileiros e Traduzido por Halley Pacheco de Oliveira C mara Municipal do Rio de Janeiro e
54. L arqexp list arqexp file Hist rico O utilit rio pg_restore apareceu pela primera vez no PostgreSQL 7 1 Consulte tamb m pg_dump pg_dumpall psql Guia do Administrador do PostgreSQL 47 psql Nome psql terminal interativo do PostgreSQL Sinopse psal op es nome bd nome do usu rio Descri o O psql um cliente do PostgreSQL em modo terminal Permite digitar os comandos interativamente envi los para o PostgreSQL e ver os resultados Como alternativa a entrada pode vir de um arquivo Adicionalmente possui um certo n mero de meta comandos e diversas funcionalidades semelhantes s da sne11 para facilitar a cria o de scripts e automatizar um grande n mero de tarefas Op es a echo all Exibe todas as linhas na tela ao serem lidas mais til para o processamento de scripts do que no modo interativo Equivale a definir a vari vel ECHO como a11 A no align Muda para o modo de sa da n o alinhado Sen o o modo de sa da padr o ser o alinhado c comando command comando Especifica que o psql deve executar a cadeia de caracteres comando e depois terminar Util para scripts O comando deve ser uma cadeia de caracteres que possa ser integralmente analisada pelo servidor ou seja n o cont m nenhuma funcionalidade espec fica do psql ou ser um nico comando de contrabarra Portanto n o podem ser misturados comandos SQL com meta comandos do psql Para fazer
55. No prompt 3 a seqii ncia n o se transforma em nada sd gitos Se d gitos come ar por 0x os caracteres restantes s o interpretados como d gitos hexadecimais e o car actere com o c digo correspondente substitu do Se o primeiro d gito for 0 os caracteres s o interpretados como um n mero octal e o caractere correspondente substitu do Sen o um n mero decimal assumido nome O valor da vari vel nome do psql Veja a se o Vari veis para obter detalhes 65 psql comando A sa da do comando similar substitui o de crase normal bd Para inserir um sinal de percentagem no prompt deve se escrever Os prompts padr o s o equivalentes a R paraos prompts le2 e gt gt parao prompt 3 Nota Esta funcionalidade foi plagiada do tcsh Edi o da linha de comando O psql suporta as bibliotecas de hist rico e de leitura de linha por ser conveniente para a edi o e recupera o da linha O hist rico dos comandos armazenado no arquivo chamado psql_history no diret rio home do usu rio sendo recarregado quando o psql inicia Completa o por tabula o tamb m suportado embora a l gica da completa o n o pretenda ser a de um analisador SQL Quando dispon vel o psql constru do para usar automaticamente esta funcionalidade Se por algum motivo n o se gostar da completa o por tabula o pode se desativ la informando isto no arquivo chamado inputrc no diret
56. O comando REINDEX utilizado para reconstruir ndices corrompidos Embora teoricamente esta necessidade nunca deva existir na pr tica os ndices podem se tornar corrompidos devido a erros de programa o ou falhas nos equipamentos O comando REINDEX fornece um m todo de recupera o O comando REINDEX tamb m remove certas p ginas mortas do ndice que n o podem ser recuperadas de outra maneira Consulte a se o Reindexa o de Rotina no manual para obter mais informa es Se houver a suspeita de que um ndice de uma tabela do usu rio est corrompido pode se simplesmente recon struir este ndice ou todos os ndices da tabela usando o comando REINDEX INDEX OU REINDEX TABLE Nota Outra forma de tratar o problema de ndice corrompido em tabela do usu rio simplesmente elimin lo e recri lo Pode se preferir esta forma para manter alguma apar ncia de uma opera o normal em uma tabela O comando rE INDEX Obt m um bloqueio exclusivo da tabela enquanto o comando CREATE INDEX bloqueia a escrita mas n o a leitura da tabela A situa o se torna mais dif cil quando necess rio recuperar um ndice corrompido de uma tabela do sistema Neste caso importante que o servidor efetuando a recupera o n o esteja usando nenhum dos ndices suspeitos Sem d vida neste tipo de cen rio pode acontecer do servidor estar caindo durante a inicializa o por depender
57. PostQuel original foi mantida sendo muita utilizada para calcular os resultados de express es simples v air ECT 2 2 column Outros bancos de dado SQL n o podem fazer isto a n o ser que seja introduzida uma tabela especial com uma nica linha para se efetuar a sele o a partir desta tabela Uma utiliza o menos bvia desta caracter stica para abreviar consultas normais a uma ou mais tabelas SELECT distribuidores WHERE distribuidores nome Westward did nome 108 Westward Isso funciona porque um FROM impl cito adicionado para cada tabela que referenciada na consulta mas n o mencionada no FROM Ao mesmo tempo em que uma forma conveniente de abreviar f cil de ser usado de forma errada Por exemplo a consulta SE Ci ECT distribuidores FROM distribuidores d deve ser um engano provavelmente o que se deseja SELECT d FROM distribuidores d em vez da jun o sem restri es SE Ej ECT distribuidores FROM distribuidores d distribuidores distribuidores que obtido na realidade Para ajudar a detectar este tipo de engano o PostgreSQL 7 1 e posteriores advertem quando um FROM impl cito usado em uma consulta que tamb m possui uma cl usula FROM expl cita 12 SELECT A funcionalidade de fun o de tabela uma extens o do PostgreSQL SQL92 Cl usula SELECT No padr o
58. REVOKE para conceder e revogar as permiss es E muito importante tomar cuidado para evitar as regras circulares Por exemplo embora qualquer uma destas duas defini es de regra seja aceita pelo PostgreSQL a consulta vai fazer com que o PostgreSQL retorne um erro porque a consulta vai circular muitas vezes CREATE RULE RETURN AS ON SELECT TO emp DO INSTEAD SELECT FROM toyemp CREATE RULE RETURN AS ON SELECT TO toyemp DO INSTEAD SELECT FROM emp A tentativa de consultar a tabela EMP faz com que o PostgreSQL emita um erro porque a consulta vai circular muitas vezes SELECT FROM emp Atualmente se uma regra possui uma consulta NOTIFY o NOTIFY ser executado incondicionalmente ou seja a notifica o ser emitida mesmo que n o haja linhas onde a regra possa ser aplicada Por exemplo em CREATE RULE me notifique AS ON UPDATE TO minha tabela DO NOTIFY minha tabela UPDATE minha tabela SET nome foo WHERE id 42 um evento de notifica o NOTIFY ser emitido durante a atualiza o UPDATE haja ou n o haja alguma linha com id 42 Esta uma restri o da implementa o que dever estar corrigida em vers es futuras CREATE RULE Compatibilidade SQL92 O comando CREATE RULE uma extens o do PostgreSQL linguagem N o existe o comando CREATE RULE n
59. SET vari vel TO DEFAULT O valor padr o definido como sendo o valor que a vari vel deveria ter se nenhum comando SET tivesse sido executado na sess o corrente A origem deste valor pode ser um padr o de compila o o arquivo de configura o do postmaster as chaves de linha de comando ou os valores definidos por banco de dados ou por usu rio Consulte o Guia do Administrador para obter detalhes Consulte a p gina do manual relativa ao comando s1 do comando RESET Diagn sticos Consulte o comando SET ET para obter detalhes sobre o comportamento em transa es Exemplos Atribuir ao par metro DateStyle o seu valor padr o RESET DateStyle Atribuir ao par metro Gego o seu valor padr o RESET GEQO Compatibilidade O comando RESET uma extens o do PostgreSQL linguagem RESET REVOKE Nome REVOKE revoga privil gios de acesso Sinopse REVOKE SELECT INSERT UPDATE DELETE RULE REFERENCES TRIGGER ALL PRIVILEGES ON TABL FROM nome do usu rio GROUP nome do grupo PUBLIC nome da tabela D REVOKE CREATE TEMPORARY TEMP ALL PRIVILEGES ON DATABASE nome_bd FROM nome do usu rio GROUP nome do grupo PUBLIC H Ea
60. SQL92 a palavra chave opcional As somente informativa podendo ser omitida sem afetar o signifi cado O analisador parser do PostgreSQL requer a presen a desta palavra chave para mudar o nome das colunas da sa da porque a funcionalidade de extensibilidade de tipo ocasiona ambigiiidades no analisador dentro deste contexto Entretanto AS opcional nos itens da cl usula FROM A frase DISTINCT ON n o faz parte do SQL92 assim como LIMIT e OFFSET No SQL92 uma cl usula ORDER BY pode utilizar somente os nomes das colunas do resultado ou n meros enquanto uma cl usula GROUP BY pode utilizar somente os nomes das colunas da entrada O PostgreSQL estende cada uma destas cl usulas para permitir a outra escolha tamb m mas utiliza a interpreta o padr o no caso de ambigiiidade O PostgreSQL tamb m permite que as duas cl usulas especifiquem express es arbitr rias Observe que os nomes que aparecem em uma express o s o sempre obtidos a partir dos nomes das colunas da entrada e n o dos nomes das colunas do resultado Cl usulas UNION INTERSECT EXCEPT A sintaxe do SQL92 para UNION INTERSECT EXCEPT permite a adi o da op o CORRESPONDING BY tabela consulta UNION ALL CORRESPONDING BY nome coluna 1 1 tabela consulta A cl usula CORRESPONDING BY n o suportada pelo PostgreSQL 13 SELECT INTO Nome SELECT INTO cria uma nova ta
61. a de interpreta o da stdin e da stdout entre as c pias feitas pelo cliente e pelo servidor na c pia pelo cliente se referem sempre entrada e sa da do psql Na c pia pelo servidor stdin vem do mesmo lugar que o comando copy veio por exemplo um script executado com a op o f e a stdout se refere sa da do comando veja o meta comando o abaixo Ycopyright Mostra os termos da distribui o e dos direitos autorais do PostgreSQL Vad padr o Para cada rela o tabela vis o ndice ou sequ ncia que corresponde ao padr o mostra todas as colunas juntamente com seus tipos e atributos especiais como NOT NULL ou o valor padr o se houver Os ndices restri es regras e gatilhos associados tamb m s o mostrados assim como a defini o da vis o se a rela o for uma vis o A Correspond ncia com o padr o definida abaixo A forma d do comando id ntica mas todos os coment rios associados s colunas da tabela tamb m s o mostrados Nota Se Ya for usado sem um argumento padr o torna se equivalente ao Nat vs mostrando a lista de todas as tabelas vis es e sequ ncias Isto puramente uma medida de conveni ncia ida padr o Lista todas as fun es de agrega o dispon veis juntamente com os tipos de dado com que operam Se padr o uma express o regular for especificado somente as agrega es correspondentes ser o exibidas dd padr o Mostra a descri o do objet
62. a entrada padr o at a marca de fim de arquivo EOF e ent o vai processar a entrada como sendo a cadeia de caracteres de um nico comando A sequ ncia contrabarra nova linha n o recebe tratamento especial neste caso Para sair da sess o tecle EOF geralmente Control D Se for usado o n ent o dois EOFs consecutivos s o necess rios para sair Observe que o servidor aut nomo n o fornece funcionalidades sofisticadas para edi o de linha n o existe o hist rico dos comandos por exemplo Consulte tamb m initdb ipcclean postmaster 91 postmaster Nome postmaster servidor de banco de dados multiusu rio do PostgreSQL Sinopse postmaster A 0 1 LB num buffers c nome valor d n vel de depura o D diret rio de dados F h nome do hospedeiro i k diret rio I N num max conex es 0 op es extras p porta S nome valor n s Descri o O postmaster o servidor de banco de dados multiusu rio do PostgreSQL Para um aplicativo cliente acessar um banco de dados deve se conectar atrav s de uma rede ou localmente a um postmaster O postmaster ent o inicia um processo servidor separado postgres para manter a conex o O postmaster tamb m gerencia a comunica o entre os processos servidores Por padr o o postmaster inicia em primeiro plano foreground e envia as mensagens de 1og para a sa da padr o Na pr tica o postmaster deve ser iniciado como um pro
63. a ser dada ao superusu rio do banco de dados Se n o se pretende usar autentica o por senha isto n o tem import ncia Sen o n o ser poss vel usar autentica o por senha enquanto n o houver uma senha definida Outros par metros menos utilizados tamb m est o dispon veis q debug Exibe sa da de depura o do servidor de bootstrap e algumas outras mensagens de menor interesse para o p blico em geral O servidor de bootstrap o programa que o initdb utiliza para criar as tabelas do cat logo Esta op o gera uma quantidade tremenda de sa da extremamente entediante 77 initdb L diret rio Especifica onde o init ak deve encontrar os seus arquivos de entrada para inicializar o sistema de banco de dados Normalmente n o necess rio Se for necess rio especificar a localiza o ser informado explicita mente lt noclean Por padr o quando o init db determina que um erro impediu a cria o completa do sistema de bancos de dados s o removidos todos os arquivos porventura criados antes de ser descoberto que n o era poss vel terminar o trabalho Esta op o impede a limpeza e portanto til para a depura o Ambiente PGDATA Especifica o diret rio onde o sistema de bancos de dados deve ser armazenado pode ser substitu do pela op o D Consulte tamb m postgres postmaster Guia do Administrador do PostgreSQL 78 initlocation Nome initlocation cria um
64. aligned Tuples only is off Expanded display is on peter localhost testdb gt SELECT FROM minha_tabela RECORD 1 first 1 second one RECORD 2 first 2 second two RECORD 3 first 3 second three RECORD 4 first 4 second four 69 pgtclsh Nome pgtclsh she11 Tcl cliente do PostgreSQL Sinopse pgtclsh nome do arquivo argumentos Descri o O pgtclsh uma interface she11 Tcl estendida com fun es de acesso a bancos de dados do PostgreSQL Essencialmente uma tclsh com a 1ibpgtcl1 carregada Como no caso da she11 Tcl normal o primeiro argumento da linha de comando o nome do arquivo de script e todos os demais argumentos s o passados para o script Se nenhum nome de arquivo for fornecido a she11 ser interativa Uma she11 Tcl com Tk e fun es PostgreSQL est dispon vel em pgtksh Consulte tamb m pgtksh Guia do Programador do PostgreSQL descri o da 1ibpgt cl telsh 70 pgtksh Nome pgtksh she11 Tcl Tk cliente do PostgreSQL Sinopse pgtksh nome do arquivo argumentos Description O pgtksh uma interface she11 Tcl Tk estendida com fun es de acesso a bancos de dados do PostgreSQL Essencialmente uma tksh com a libpgtcl carregada Como no caso da she11 Tcl Tk normal o primeiro argumento da linha de comando o nome do arquivo de script e todos os demais argumentos s o passados para o script As op es especi
65. autoriza o expira ao meio dia de 4 de maio de 1998 usando uma zona hor ria uma hora adiante da UTC ALTER USER cristina VALID UNTIL May 4 12 00 00 1998 17 Dar ao usu rio poderes para criar outros usu rios e novos bancos de dados ALTER USER marcela CREATEUSER CREATEDB Compatibilidade O comando ALTER USER uma extens o do PostgreSQL O padr o deixa a defini o dos usu rios para a imple menta o Consulte tamb m CREATE USER DROP USER SET ANALYZE Nome ANALYZE coleta estat sticas sobre um banco de dados Sinopse ANALYZE VERBOSE tabela Entradas VERBOSE coluna 17 Ativa a exibi o de mensagens de progresso tabela O nome opcionalmente qualificado pelo esquema de uma tabela espec fica a ser analisada Por padr o todas as tabelas coluna O nome de uma coluna espec fica a ser analisada Por padr o todas as colunas Sa das ANALYZE O comando est conclu do Descri o O comando ANALYZE coleta estat sticas sobre o conte do das tabelas do PostgreSQL e armazena os resultados na tabela do sistema pg_statistic Posteriormente o otimizador de consultas utiliza estas estat sticas para auxiliar na determina o do plano de execu o mais eficiente para as consultas Sem nenhum par metro o comando ANALYZ E analisa todas as tabelas do banco de dados em us
66. com o dom nio Por sua vez o padr o do dom nio prevalece sobre qualquer padr o associado ao o tipo de dado subjacente CONSTRAINT nome da_restri o Um nome opcional para a restri o Se n o for especificado o sistema gera um nome NOT NULL Os valores para este dom nio n o podem ser nulos NULL Os valores para este dom nio podem ser nulos Este o padr o Esta cl usula est dispon vel somente para manter a compatibilidade com os bancos de dados SQL fora do padr o Seu uso desaconselhado nos novos aplicativos CREATE DOMAIN Sa das CREATE DOMAIN Mensagem retornada se o dom nio for criado com sucesso Descri o O comando CREATE DOMAIN permite ao usu rio registrar um novo dom nio de dados no PostgreSQL para ser usado no banco de dados corrente O usu rio que cria o dom nio se torna o seu dono Se o nome do esquema for fornecido por exemplo CREATE DOMAIN meu esquema meu dominio ent o o dom nio criado no esquema especificado sen o criado no esquema corrente aquele na frente do caminho de procura consulte O CURRENT SCHEMA O nome do dom nio deve ser nico entre os tipos e dom nios existentes em seu esquema Os dom nios s o teis para abstrair campos comuns entre tabelas em um nico lugar para manuten o Uma coluna de endere o de correio eletr nico pode ser usada em v rias tabelas sempre com as mesmas propriedades Pode
67. com prefer ncia maior que os itens extended e external Tipos Compostos A segunda forma do CREATE TYPE cria um tipo composto O tipo composto especificado por uma rela o de nomes de colunas e tipos de dado essencialmente o mesmo que o tipo de uma linha de uma tabela mas usando CREATE TYPE se CREATE TYPE evita a necessidade de se criar uma tabela real quando tudo o que se deseja definir um tipo Um tipo composto aut nomo til como o tipo de retorno de uma fun o Tipos matriciais Sempre que criado um tipo de dado definido pelo usu rio o PostgreSQL automaticamente cria um tipo matriz array associado cujo nome consiste do nome do tipo base prefixado por um caractere sublinhado O analisador compreende esta conven o de nome e traduz as requisi es para colunas do tipo foo em requisi es do tipo foo O tipo matriz criado implicitamente de comprimento vari vel e usa as fun es de entrada e sa da nativas array intearray out Pode se perguntar com raz o porque existe a op o ELEMENT se o sistema produz o tipo matriz correto auto maticamente O nico caso em que til utilizar ELEMENT quando se constr i um tipo de comprimento fixo que internamente uma matriz de N componentes id nticos e deseja se que estes N componentes sejam aces sados diretamente por ndices em adi o a qualquer outra opera o que se planeje fornecer para este
68. compati bilidade com as vers es anteriores N o s o diferenciadas letras min sculas de mai sculas nos nomes dos atributos Notas Consulte o cap tulo do Guia do Programador do PostgreSQL relativo extens o do PostgreSQL atrav s de fun es para obter mais informa es sobre como escrever fun es externas A sintaxe completa do SQL permitida para os argumentos de entrada e o valor retornado Entretanto alguns detalhes da especifica o do tipo por exemplo a precis o para tipos numeric s o responsabilidade da imple menta o da fun o subjacente sendo silenciosamente aceitos pelo comando CREATE FUNCTION ou seja n o s o reconhecidos ou exigidos O PostgreSQL permite a sobrecarga de fun o ou seja o mesmo nome pode ser usado por v rias fun es difer entes desde que possuam argumentos com tipos diferentes Entretanto esta funcionalidade deve ser usada com cuidado para as fun es internas e para as fun es escritas na linguagem C Duas fun es internal n o podem possuir o mesmo nome no c digo C sem causar erros durante a fase de liga o Para contornar este problema deve se dar nomes diferentes no c digo C por exemplo usar os tipos dos argumentos como parte do nome no c digo C ent o especificar este nome na cl usula AS do comando CREATE FUNCTION Se a cl usula AS for omitida ent o CREATE FUNCTION assume que o nome da fun o no c digo C tem o mesmo nome do SQL
69. createlang Guia do Programador do PostgreSQL CREATE GROUP Nome CREATE GROUP cria um grupo de usu rios Sinopse CREATE GROUP nome WITH op o 1 onde op o pode ser SYSID gid USER nome usu rio Entradas nome g1 O nome do grupo id A cl usula SysID pode ser utilizada para escolher o identificador do novo grupo no PostgreSQL Entretanto n o h necessidade de ser utilizada Se esta cl usula n o for especificada o valor do identificador mais alto atribu do a um grupo acrescido de um come ando por 1 ser utilizado por padr o nome usu rio Sa das A rela o dos usu rios a serem inclu dos no grupo Os usu rios devem existir CRE ATE GROUP Mensagem retornada se o comando for executado com sucesso Descri o O comando CREATE GROUP cria um novo grupo na instala o de banco de dados Consulte o Guia do Admin istrador do PostgreSQL para obter mais informa es sobre a utiliza o de grupos para autentica o necess rio ser um superusu rio do banco de dados para executar este comando CREATE GROUP Use o ALTER GROUP para incluir ou excluir usu rios no grupo e o DROP GROUP para excluir um grupo Utiliza o Criar um grupo vazio CRE ATE GROUP engenharia Criar um grupo com membros CREATE GROUP vendas WITH USI Compatibilidade SQL92 N o existe o comando CRI
70. da Da mesma maneira a cl usula ON UPDATE especifica a a o a ser executada quando uma coluna referenciada da tabela referenciada muda de valor Se a linha atualizada mas a coluna referenciada n o muda de valor nenhuma a o executada S o poss veis as seguintes a es para cada cl usula NO ACTION Gera um erro indicando que a exclus o ou a atualiza o criaria uma viola o de chave estrangeira Esta a a o padr o RESTRICT O mesmo que NO ACTION CASCADE Exclui qualquer linha que fa a refer ncia linha exclu da ou atualiza o valor da coluna que faz refer ncia usando o novo valor da coluna referenciada respectivamente SET NULL Atribui nulo aos valores das colunas que fazem refer ncia SE DEFAULT Atribui o valor padr o s colunas que fazem refer ncia Se a coluna da chave prim ria atualizada fregiientemente pode ser til adicionar um ndice s colunas da cl usula REFERENCES para que as a es NO ACTION e CASCADE associadas s colunas da cl usula REFERENCES sejam executadas mais rapidamente ERRABLE OU NOT DEFERRABLE Estas cl usulas controlam se as restri es podem ser postergadas Uma restri o que n o pode ser postergada verificada imediatamente ap s cada comando A verifica o das restri es que s o posterg veis pode ser adiada para o final da transa
71. de jun o mesclagem se comporte como o operador de igualdade com rela o ordena o Por exemplo poss vel uma igualdade jun o mesclagem entre uma vari vel inteira e uma de ponto flutuante ordenando se as duas entradas na ordem num rica normal A execu o de uma jun o de mesclagem requer que o sistema possa identificar quatro operadores relacionados com o operador igualdade jun o mesclagem compara o menor que para o tipo de dado de entrada esquerda compara o menor que para o tipo de dado de entrada direita compara o menor que entre os dois tipos de dado e compara o maior que entre os dois tipos de dado poss vel fazer estas especifica es pelo nome com as op es SORT1 SORT2 LTCMP e GTCMP respectivamente O sistema usa os nomes padr o lt lt lt gt respectivamente quando um deles omitido na especifica o do MERGES Tamb m assumido que MERGES est envolvido quando uma destas quatro op es de operador aparece Se forem descobertas outras estrat gias de jun o consideradas pr ticas o PostgreSQL mudar o otimizador e o sistema de execu o para us las demandando especifica o adicional quando um operador for definido Felizmente a comunidade de pesquisa n o inventa novas estrat gias de jun o frequentemente e a generalidade adicionada por estrat gias de jun o definidas pelo usu rio n o foram consideradas como valendo a complexi
72. de registro linha a ser usado no modo de sa da n o alinhado O padr o o caractere de nova linha tuples only out Alterna entre exibir somente as tuplas e exibir tudo O modo exibir tudo pode mostrar informa es adicionais como os cabe alhos das colunas t tulos e v rios rodap s No modo tuplas apenas somente os dados da tabela s o mostrados title texto Define o t tulo para as pr ximas tabelas a serem impressas Pode ser usado para colocar textos des critivos na sa da Se nenhum argumento for fornecido a defini o removida Nota Anteriormente s afetava o modo HTML Atualmente pode ser definido t tulo para qualquer formato de sa da tableattr ou T texto Permite especificar qualquer atributo a ser colocado dentro do marcador table do HTML Estes atrib utos podem ser por exemplo cellpadding ou bgcolor Observe que provavelmente n o vai se desejar especificar border aqui porque isto j tratado pelo Npset border pager Alterna o paginador usado para mostrar a sa da da tabela Se a vari vel de ambiente PAGER estiver definida a sa da enviada para o programa especificado sen o o more utilizado De qualquer maneira o psql somente usa o paginador se julgar adequado significando que entre outras coisas a sa da para um terminal e que a tabela normalmente n o caberia na tela Devido a natureza modular das rotinas de impress o nem sempre poss vel predizer o n mero de l
73. de um subconjunto dos dados da tabela A express o utilizada na cl usula wHERE pode referenciar apenas as colunas da tabela subjacente mas pode ref erenciar qualquer coluna e n o apenas as que est o sendo indexadas Na forma atual subconsultas e express es de agrega o n o s o permitidas na cl usula WHERE Todas as fun es e operadores utilizados por um ndice devem ser imut veis immutable ou seja seus resultados devem depender apenas de seus argumentos de entrada e nunca de uma influ ncia externa como o conte do de outra tabela ou a hora atual Esta restri o garante que o comportamento do ndice bem preciso Para utilizar uma fun o definida pelo usu rio em um ndice deve ser utilizado o atributo immutable na cl usula WITH Use o DROP INDEX para excluir um ndice Notas O otimizador de consultas do PostgreSQL vai considerar o uso de um ndice B tree sempre que um atributo indexado estiver envolvido em uma compara o utilizando um dos seguintes operadores lt lt gt gt O otimizador de consultas do PostgreSQL vai considerar o uso de um ndice R tree sempre que um atributo indexado estiver envolvido em uma compara o utilizando um dos seguintes operadores lt lt amp lt amp gt gt gt O amp amp O otimizador de consultas do PostgreSQL vai considerar o uso de um ndice hash sempre que um atributo indexado estiver envolvido em
74. de uma fun o sem invalidar os objetos que fazem refer ncia fun o Para poder criar uma fun o o usu rio deve possuir o privil gio USAGE na linguagem Por padr o somente o dono criador da fun o possui o direito de execut la Aos outros usu rios deve ser concedido o privil gio EXECUTE na fun o para que possam execut la Exemplos Para criar uma fun o SQL simples CREATE FUNCTION um RETURNS integer AS SELECT 1 AS RESULTADO ANGUAGE SQL SELECT um AS resposta resposta Este exemplo cria uma fun o C chamando a rotina de uma biblioteca compartilhada criada pelo usu rio chamada funcs so a extens o pode variar entre plataformas O arquivo contendo a biblioteca compartilhada procu rado no caminho de procura de biblioteca compartilhada do servidor Esta rotina em particular calcula o d gito verificador e retorna TRUE se o d gito verificador dos par metros da fun o est correto A inten o utilizar esta fun o numa restri o de verifica o CHECK CREATE FUNCTION ean checkdigit char char RETURNS boolean AS funcs LANGUAGE C CREATE TABLE product id char 8 PRIMARY KEY eanprefix char 8 CHECK eanprefix 0 9 2 0 9 5 REFERENCES brandname ean prefix eancode char 6 CHECK eancode 0 9 6 CONSTRAINT ean G
75. deve se usar o comando unset Nomes v lidos de vari veis podem conter letras d gitos e sublinhados Veja a se o sobre as vari veis do psql para obter detalhes Embora possa ser definida qualquer vari vel para fazer qualquer coisa que se deseje o psql trata diversas vari veis como sendo especiais Elas est o documentadas na se o sobre vari veis Nota Este comando totalmente distinto do comando SQL SET NE Alterna a exibi o do cabe alho contendo o nome das colunas e do rodap contendo o n mero de linhas Este comando equivalente ao pset tuples only sendo fornecido por conveni ncia VT op es de tabela Permite especificar op es a serem colocadas na tag table no modo de sa da tabular HTML Este comando equivalente ao pset tableattr op es de tabela timing Alterna a exibi o de quanto tempo cada comando SQL demora em milissegundos w nome _do_arquivol comando Escreve o buffer de comando corrente no arquivo nome do arquivo ou envia para o comando Unix comando atrav s de um pipe Nx Alterna o modo estendido de formato de linha Sendo assim equivalente ao pset expanded z padr o Produz uma lista contendo todas as tabelas dispon veis juntamente com suas permiss es de acesso Se padr o for especificado somente as tabelas cujos nomes correspondem ao padr o s o listadas 60 psgl Os comandos GRANT e REVOKE s o utilizados para definir as permiss es de acesso
76. deve ser executada com os privil gios do usu rio que faz a chamada Este o padr o SECURITY DEFINER especifica que a fun o deve ser executada com os priv il gios do usu rio que a criou A palavra chave EXTERNAL est presente para manter a compatibilidade com o SQL mas opcional uma vez que diferentemente do SQL esta funcionalidade n o se aplica somente s fun es externas defini o Uma cadeia de caracteres contendo a defini o da fun o o significado depende da linguagem Pode ser o nome de uma fun o interna o caminho para um arquivo objeto uma consulta SQL ou um texto escrito em uma linguagem procedural CREATE FUNCTION arquivo objeto simbolo de liga o Esta forma da cl usula AS usada para fun es escritas na linguagem C ligadas dinamicamente quando o nome da fun o no c digo fonte da linguagem C n o o mesmo nome da fun o SQL A cadeia de caracteres arquivo objeto o nome do arquivo contendo o objeto carregado dinamicamente e simbolo de liga o o s mbolo de liga o do objeto ou seja o nome da fun o no c digo fonte escrito na linguagem C atributo A forma hist rica de se especificar informa es opcionais sobre a fun o Os seguintes atributos podem ser utilizados IsStrict Equivalente ao STRICT ou ao RETURNS NULL ON NULL INPUT isCachable isCachable uma forma obsoleta equivalente ao IMMUTABLE ainda aceito por motivo de
77. devem ser lidos como indicando a inten o de se obter um bloqueio no n vel de linha dentro de um bloqueio de tabela Tamb m o modo ROW EXCLUSIVE n o segue esta conven o de nomes de forma exata uma vez que um bloqueio compartilhado de tabela Deve se ter em mente que todos estes modos de bloqueio possuem sem ntica id ntica no que diz respeito ao LOCK TABLE diferindo apenas nas regras sobre quais modos conflitam com quais modos LOCK Utiliza o Obter o bloqueio no modo SHARE da tabela que cont m a chave prim ria antes de fazer uma inser o na tabela que cont m a chave estrangeira wW EGIN WORK LOCK TABLE filmes IN SHARE MOD SELECT id FROM filmes WHERE nome Star Wars Episode I The Phantom Menace Fazer o ROLLBACK se a linha n o for encontrada INSERT INTO filmes_comentarios VALUES _id_ Maravilhoso Eu estava aguardando por isto h muito tempo COMMIT WORK EJ Obter o bloqueio no modo SHARE ROW EXCLUSIVE da tabela que cont m a chave prim ria antes de realizar a opera o de exclus o BEGIN WORK LOCK TABLE filmes IN SHARE ROW EXCLUSIVE MODE DELETE FROM filmes_comentarios WHERE id IN SELECT id FROM filmes WHERE avaliacao lt 5 DELETE FROM filmes WHERE avaliacao lt 5 COMMIT WORK Compatibilidade SQL92 N o existe o com
78. do ndice corrompido Para executar a recupera o segura o postmaster deve ser parado e um servidor aut nomo stand alone do PostgreSQL deve ser iniciado fornecendo se as op es de linha de comando O e P estas op es permitem modificar as tabelas do sistema e faz com que os ndices do sistema n o sejam utilizados respectiva mente Ent o se executa o comando REINDEX INDEX REINDEX TABLE OU REINDEX DATABASE dependendo de quanto se deseja reconstruir Na d vida deve ser utilizado o comando REINDEX DATABASE FORCE para for ar a reconstru o de todos os ndices do sistema no banco de dados Em seguida o servidor aut nomo deve ser parado e o postmaster reiniciado Como esta provavelmente a nica situa o em que a maioria das pessoas usa um servidor aut nomo algumas observa es devem ser feitas Inicie o servidor com um comando como postgres D SPGDATA O P meu banco de dados Forne a o caminho correto para a rea de banco de dados na op o D ou assegure se de que a vari vel de ambiente PGDATA est declarada Tamb m deve ser especificado o nome do banco de dados em particular em que se deseja trabalhar e Pode ser executado qualquer comando SQL e n o apenas o REINDEX Tenha em mente que o servidor aut nomo trata o caractere de nova linha como t rmino da entrada do comando n o existe a intelig ncia sobre o ponto e v rgula como existe no
79. do arquivo Os bits s o numer ados de O LSB at 31 MSB observe que este campo armazenado na ordem dos bytes da plataforma de origem assim como todos os campos inteiro posteriores Os bits 16 31 s o reservados para caracterizar quest es cr ticas do formato do arquivo o leitor deve abortar se for encontrado um bit n o esperado neste in tervalo Os bits 0 15 s o reservados para sinalizar quest es de formato precedente compat veis o leitor deve simplesmente ignorar qualquer bit n o esperado neste intervalo Atualmente somente um bit sinalizador est definido os outros devem ser zero Bit 16 Se for igual a 1 os OIDs est o inclu dos no arquivo O caso contr rio Comprimento da rea de extens o do cabe alho Valor int32 do comprimento em bytes do restante do cabe alho n o se incluindo Na vers o inicial ser zero com a primeira tupla vindo a seguir Mudan as futuras no formato podem permitir a presen a de dados adicionais no cabe alho O leitor deve simplesmente desprezar qualquer dado da rea de extens o do cabe alho que n o souber o que fazer com a mesma A rea de extens o do cabe alho imaginada como contendo uma seqgii ncia de blocos auto identificantes O campo de sinalizadores n o tem por finalidade informar os leitores o que existe na rea de extens o O projeto espec fico do conte do da rea de extens o do cabe alho foi deixado para uma vers o futura Este projeto permite tanto adi
80. do comando As letras i s t v S correspondem ao ndice segii ncia tabela vis o e tabela do sistema respectivamente Pode se especificar qualquer uma ou todas as letras em qualquer ordem para obter a listagem de todos os objetos correspondentes A letra S restringe a listagem aos objetos do sistema sem o S somente os objetos que n o s o do sistema s o mostrados Se o caractere for anexado ao nome do comando cada objeto listado juntamente com sua descri o associada se houver Se o padr o for especificado somente os objetos cujos nomes correspondem ao padr o s o listados Este um sin nimo para lo_list que mostra a lista dos objetos grandes padr o Lista os operadores dispon veis juntamente com o tipo de seus operandos e do valor retornado Se padr o for especificado somente os operadores cujos nomes correspondem ao padr o ser o listados padr o Produz uma lista de todas as tabelas dispon veis juntamente com duas permiss es de acesso associadas Se padr o for especificado somente as tabelas cujos nomes correspondem ao padr o s o listadas Os comandos GRANT e REVOKE s o utilizados para definir permiss es de acesso Consulte o comando GRANT para obter mais informa es padr o Lista todos os tipos de dado ou somente queles que correspondem ao padr o A forma dT do comando mostra informa es extras padr o Lista todos os usu rios do banco de dados ou soment
81. do usu rio que causou sua ativa o importante que se tenha em mente que uma regra na verdade um mecanismo de transforma o de consultas ou uma macro de consultas Toda a consulta processada para que seja convertida em uma s rie de consul tas que incluam as a es das regras o que ocorre antes do in cio da avalia o da consulta Portanto as regras condicionais s o tratadas pela adi o da condi o da regra cl usula WHERE das a es derivadas da regra A descri o anterior de uma regra como uma opera o que executada para cada linha portanto enganosa Se for desejada uma opera o que dispare independentemente de cada linha f sica provavelmente o que se deseja um gatilho e n o uma regra As regras s o mais teis nas situa es em que se deseja transformar toda a consulta independentemente dos dados espec ficos sendo tratados Regras e Vis es Atualmente as regras ON SELECT devem ser regras incondicionais INSTEAD e devem possuir a es compostas por uma nica consulta SELECT Portanto uma regra ON SELECT torna efetivamente a tabela objeto em uma vis o cujo conte do vis vel s o as linhas retornadas pela consulta SELECT da regra em vez de qualquer outra coisa que tenha sido armazenada na tabela se houver Escrever um comando CREATE VIEW considerado um estilo melhor do que criar uma tabela de verdade e definir uma regra ON SELECT para esta tabela CREATE RULE O comando CREATE VIEW cria
82. do usu rio e a senha antes de se conectar ao banco de dados Esta op o est obsoleta porque conceitualmente errada Solicitar um nome de usu rio n o padr o e solicitar uma senha porque o servidor requer s o duas coisas realmente diferentes Encoraja se o uso das op es U e w em seu lugar U nome do usu rio username nome do usu rio Conecta se as banco de dados como o usu rio nome do usu rio em vez do padr o E necess rio ter permiss o para faz lo claro v atribui o set atribui o variable atribui o Realiza a atribui o de vari vel como o comando interno set Observe que necess rio separar o nome e o valor se houver por um sinal de igual na linha de comando Para remover a defini o de uma vari vel omite se o sinal de igual Para definir uma vari vel sem um valor usa se o sinal de igual mas omite se o valor 50 psql Estas atribui es s o realizadas durante um est gio bem no princ pio da inicializa o portanto as vari veis reservadas para finalidades internas devem ser sobrescritas mais tarde V version Mostra a vers o do psql W password Requer que o psql solicite a senha antes de se conectar ao banco de dados Esta continuar definida por toda a sess o mesmo que a conex o ao banco de dados seja mudada com o meta comando Y connect Na vers o corrente o psql automaticamente solicita a senha sempre que o servidor requer autentica
83. dos quais o segundo do tipo OID O segundo argumento novamente o tipo do elemento da matriz para tipos array A fun o de sa da deve retornar o tipo cstring Podemos estar nos perguntando neste ponto como as fun es de entrada e de sa da podem ser declaradas como possuindo resultados ou entradas do novo tipo se elas devem ser criadas antes do novo tipo ser criado A resposta que a fun o de entrada deve ser criada primeiro depois a fun o de sa da e depois o tipo de dado O PostgreSQL primeiramente ver o nome do novo tipo de dado como o tipo retornado pela fun o de entrada vai criar um tipo CREATE TYPE de abrigo que simplesmente uma entrada na tabela pg type e vai ligar a defini o da fun o de entrada ao tipo de abrigo Analogamente a fun o de sa da vai ser ligada ao agora j existente tipo de abrigo Finalmente O CREATE TYPE substitui a entrada de abrigo com a defini o completa do tipo e o novo tipo poder ser usado Nota Nas vers es do PostgreSQL anteriores a 7 3 era comum evitar a cria o do tipo de abrigo substituindo as refer ncias frente das fun es ao nome do tipo usando o pseudo tipo opaquE AS entradas e resultados cstring tamb m deviam ser declarados como orAqUuE antes da 7 3 Para permitir a carga de c pias de seguran a antigas O CREATE TYPE vai aceitar as fun es declaradas usando opaque mas vai gerar uma NOTICE e mudar a declara o da fun
84. dropuser p 5000 h eden i e joel User joel and any owned databases will be permanently deleted Are you sure y n y DROP USER joel DROP USER Consulte tamb m createuser DROP USER 26 ecpg Nome ecpg pr processador de SQL embutido para a linguagem C Sinopse ecpg op o arquivo Descri o O ecpg o pr processador de SQL embutido para programas C Converte programas C com comandos SQL em c digo C normal substituindo as chamadas ao SQL por chamadas a fun es especiais Os arquivos de sa da podem ent o ser compilados por qualquer compilador C O ecpg converte cada arquivo de entrada presente na linha de comando no arquivo C correspondente De prefer ncia os arquivos de entrada devem possuir a extens o pgc e neste caso a extens o ser substitu da por c para construir o nome do arquivo de sa da Se a extens o do arquivo de entrada n o for pgc ent o o nome do arquivo de sa da ser constru do anexando c ao nome completo do arquivo de entrada O nome do arquivo de sa da pode ser especificado atrav s da op o o Esta p gina de refer ncia n o descreve a linguagem SQL embutida Consulte o Guia do Programador do Post greSQL para esta finalidade Op es O ecpg aceita os seguintes argumentos de linha de comando Gera automaticamente c digo C a partir do c digo SQL Atualmente funciona para EXEC SQL TYPE D s mbolo Define um s mbolo do pr proc
85. echo Exibe os comandos que o createuser gera e envia para o servidor E encrypted Criptografa a senha do usu rio armazenada no banco de dados Se n o for especificado o padr o ser uti lizado i uid sysid uid Permite escolher uma identifica o do usu rio diferente da padr o Embora n o seja necess rio algumas pessoas gostam N unencrypted N o criptografa a senha do usu rio armazenada no banco de dados Se n o for especificado o padr o ser utilizado P pwprompt Se for fornecido o createuser solicita a senha do novo usu rio n o sendo necess rio caso n o se pretenda usar autentica o por senha q quiet N o exibe resposta Ser solicitado o nome e outras informa es necess rias se n o forem especificadas na linha de comando O createuser tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o h host host host Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p porta port porta Especifica a porta Internet TCP IP ou o soquete do dom nio Unix local onde o servidor est aguardando as conex es U nome do usu rio username nome do usu rio Nome do usu rio para se conectar n o o nome do usu rio a ser criado 15 createuser W password For a a solicita o da senha
86. ent o reinicializar a mem ria compartilhada e os sem foros Isto necess rio porque um servidor errante pode ter corrompido algum estado compartilhado antes de terminar Estas op es caso especial s o n O postmaster n o ir reinicializar as estruturas de dado compartilhadas Um programador de sistemas com conhecimento adequado poder ent o usar um depurador para examinar a mem ria compartilhada e o es tado do sem foro S O postmaster ir parar todos os outros processos servidores enviando o sinal SIGSTOP mas n o ir faz los terminar permitindo aos programadores de sistema coletar os core dumps de todos os processos servidores manualmente Ambiente PGCLIENTENCODING A codifica o de caracters padr o utilizada pelos clientes Os clientes podem redefini la individualmente Este valor tamb m pode ser definido no arquivo de configura o PGDATA Localiza o padr o do diret rio de dados 94 PGDATASTYLE postmaster Valor padr o do par metro de tempo de execu o datesty1e A utiliza o desta vari vel de ambiente est obsoleta PGPORT TZ Porta padr o definida de prefer ncia no arquivo de configura o Zona hor ria do servidor outras Outras vari veis de ambiente podem ser usadas para designar locais alternativos para armazenamento dos dados Consulte o Guia do Administrador para obter mais informa es Diagn sticos semget No space l
87. es de cabe alho precedente compat veis adicionar blocos de extens o de cabe alho ou sinalizar com bits de baixa ordem e mudan as n o precedente compat veis usar bits de alta ordem para sinalizar estas mudan as e adicionar dados de apoio para a rea de extens o se for necess rio Tuplas Cada tupla come a com um contador int16 do n mero de campos na tupla atualmente todas as tuplas da tabela possuem o mesmo contador mas isto pode n o ser verdade para sempre Ent o repetido para cada campo da tupla existe uma palavra tipo comprimento typlen intl6 possivelmente seguida por um campo de dados O campo tipo comprimento interpretado como Zero gt 0 O campo nulo Nenhum dado segue O campo possui um tipo de dado de comprimento fixo Exatamente N bytes de dados seguem a palavra tipo comprimento typlen O campo possui um tipo de dado de comprimento vari vel varlena Os pr ximos quatro bytes s o o cabe alho que cont m o valor do comprimento total incluindo a si pr prio COPY lt l Reservado para uso futuro Para campos n o nulos o leitor pode verificar se o tipo comprimento typlen corresponde ao tipo comprimento esperado para a coluna de destino fornecendo uma maneira simples mas muito til de verificar se o dado est como o esperado N o existe nenhum preenchimento de alinhamento ou qualquer dado extra entre os campos Tamb m observe que o formato n o distingue se um tipo de dado
88. especificam as restri es ou testes que as linhas novas ou modificadas devem satisfazer para a opera o de inclus o ou de altera o ser completada Uma restri o uma regra com nome um CREATE TABLE objeto SQL que ajuda a definir conjuntos v lidos de valores estabelecendo limites nos resultados das opera es de inclus o exclus o e atualiza o realizadas na tabela Existem duas formas para definir restri es restri es de tabela e restri es de coluna A restri o de coluna definida como parte da defini o da coluna A restri o de tabela n o est presa a uma coluna em particular podendo abranger mais de uma coluna Toda restri o de coluna tamb m pode ser escrita como uma restri o de tabela a restri o de coluna somente uma nota o conveniente no caso da restri o afetar apenas uma coluna Par metros LOCAL TI EMPORARY OU LOCAL TEMP Se for especificado a tabela criada como uma tabela tempor ria Tabelas tempor rias s o automaticamente eliminadas no final da sess o Uma tabela permanente com o mesmo nome caso exista n o ser vis vel na sess o corrente enquanto a tabela tempor ria existir a menos que seja referenciada por um nome qualificado pelo esquema Todo ndice criado em tabela tempor ria tamb m tempor rio A palavra LOCAL opcional Veja sob Compatibilidade nome da tabela O nome opcionalmente qualificado pelo esquema da tabel
89. este arquivo Para definir a regi o usada pelo initab deve ser consultada a descri o da op o locale A codifica o do conjunto de caracteres pode ser definida individualmente para cada banco de dados no momento de sua cria o O init ab determina a codifica o para o banco de dados template1 que serve de padr o para todos os outros bancos de dados Para mudar a codifica o padr o deve ser usada a op o encoding O initdb deve ser executado pelo mesmo usu rio do processo servidor porque o servidor necessita ter acesso aos arquivos e diret rios criados pelo init ab Como o servidor n o deve ser executado como root tamb m n o se deve executar o initdb como root Na verdade este vai se recusar a faz lo Embora o initdab tente criar o diret rio de dados especificado muitas vezes n o ter permiss o para faz lo porque este diret rio geralmente est sob um diret rio que pertence ao root Para resolver uma situa o como esta deve se criar um diret rio de dados vazio como root depois usar o comando chown para mudar o dono deste diret rio para o usu rio do banco de dados em seguida executar su para se tornar o usu rio do banco de dados e finalmente executar init db como o usu rio do banco de dados 76 initdb Op es D diret rio pgdata diret rio Esta op o especifica o diret rio onde o sistema de banco de dados deve ser armazenado Esta a nica in forma o requerida pelo init ab
90. executar o pg dump deve se ter certeza de poder consultar as informa es no banco de dados usando por exemplo o psql Notas Se na instala o houver alguma adi o local ao banco de dados templatel deve se ter o cuidado de restaurar a sa da do pg dump em um banco de dados realmente vazio de outra forma podem acontecer erros devido duplicidade de defini es dos objetos adicionados Para criar um banco de dados vazio sem nenhuma adi o local deve se faz lo partir do template0 e n o do templatel Por exemplo CREATE DATABASE foo WITH TEMPLATE template O pg dump possui algumas poucas limita es Ao exportar uma nica tabela ou no formato texto puro o pg dump n o trata objetos grandes Os objetos grandes devem ser exportados em sua inteireza usando um dos formatos bin rios de exporta o Ao exportar somente os dados o pg dump gera comandos para desativar os gatilhos das tabelas do usu rio antes de inserir os dados e comandos para reativ los ap s os dados terem sido inseridos Se a restaura o for interrompida no meio os cat logos do sistema podem ficar em um estado errado Os membros de arquivos tar est o limitados a um tamanho inferior a 8 GB esta limita o inerente ao formato dos arquivos tar Portanto este formato n o pode ser utilizado se a representa o textual da tabela exceder este tamanho O tamanho total do arquivo tar e dos outros formatos de sa da n
91. interpola o de vari veis n o realizada dentro de entidades SQL entre ap strofos Uma aplica o comum desta funcionalidade para fazer refer ncia nos comandos seguintes ao ltimo OID in serido para construir um cen rio de chave estrangeira Outro uso poss vel deste mecanismo copiar o conte do de um arquivo para um campo Primeiro deve se carregar o arquivo na vari vel e depois proceder coforme mostrado testdb gt set content cat meu arquivo txt N testdb gt INSERT INTO minha tabela VALUES content Um problema poss vel com esta abordagem que o meu arquivo txt pode conter ap strofos que devem ser precedidos por uma contrabarra para que n o causem erro de sintaxe quando a inser o for processada o que poderia ser feito atrav s do programa sed testdb gt set content N sed e s ANNNWN g lt meu arquivo txt N Observe o n mero correto de contabarras 6 Isto pode ser visto desta maneira Ap s o psql ter analisado esta linha vai enviar sed e s NNN g lt meu arquivo txt para a shell A shell far suas pr prias coisas dentro das aspas e vai executar o sed com os argumentos e e s V g Quando o sed fizer a an lise vai substituir as duas contrabarras por uma nica e ent o vai fazer a substitui o Talvez em um algum ponto tenha se pensado que timo todos os comandos Unix usarem o mesmo caractere de escape escape character Isto tudo ainda ignora o fato de se
92. isto pode ser enviada a cadeia de caracteres para o psql conforme mostrado a seguir echo Nx NN select from foo psql d nome bd dbname nome bd Especifica o nome do banco de dados a se conectar Equivale a especificar nome bd como o primeiro argumento n o op o na linha de comando E echo queries Mostra todos os comandos enviados para o servidor Equivale a definir a vari vel ECHO como queries 48 psgl 7E echo hidden Exibe o comando real gerado pelo id e por outros comandos de contrabarra Pode ser usado caso se deseje incluir uma funcionalidade similar nos pr prios programas Equivale a definir a vari vel ECHO HIDDEN a partir do psgl f nome do arquivo file nome do arquivo Usa o arquivo nome do arquivo como origem dos comandos em vez de ler os comandos interativa mente Ap s o arquivo ser processado o psql termina Sob muitos aspectos equivale ao comando interno NIS Seo nome do arquivo for h fen a entrada padr o lida O uso desta op o sutilmente diferente de escrever psql lt nome do arquivo De uma maneira geral as duas fazem o esperado mas o uso de f ativa algumas funcionalidades teis como mensagens de erro contendo o n mero da linha Ao se usar esta op o tamb m existe uma pequena chance de reduzir a sobre carga da inicializa o Por outro lado utilizando o redirecionamento da entrada em teoria garante produzir exa
93. mais informa es Op es O droplang aceita os seguintes argumentos de linha de comando nome da linguagem Especifica o nome da linguagem de programa o do servidor a ser removida d nome bd dbname nome bd Especifica de qual banco de dados a linguagem deve ser removida O padr o usar o banco de dados com o mesmo nome do usu rio atual do sistema operacional e echo Exibe os comandos SQL medida que s o executados 1 list Exibe a rela o das linguagens instaladas no banco de dados de destino que deve ser especificado O droplang tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o 21 droplang h host host host Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p port OCL DOE Especifica a porta Internet TCP IP ou o soquete do dom nio Unix local onde o servidor est aguardando as conex es U username usernam usernam Nome do usu rio para se conectar W password For a a solicita o da senha Ambiente PGDATABASI PGHOST PGPORT PGUSER E Par metros de conex o padr o Diagn sticos A maioria das mensagens de erro s o auto explicativas Se n o for execute o droplang com a op o echo e consulte o comando SQL respectivo para obter detalhes Consulte tamb m o aplicat
94. manual Deve portanto ser evitado Exemplos Iniciar o postmaster Para iniciar o postmaster pg ctl start Exemplo de iniciar o postmaster bloqueando at que o postmaster esteja ativo pg ctl w start Para iniciar o postmaster utilizando a porta 5433 e executando sem o fsync pode se usar pg ctl o F p 5433 start Parar o postmaster pg ctl stop p ra o postmaster A chave m permite controlar como o servidor vai parar Reiniciar o postmaster Praticamente equivale a parar o postmaster e inici lo novamente exceto que o pg ctl salva e reutiliza as op es de linha de comando que foram passadas para a inst ncia executando anteriormente Para reiniciar o postmaster da forma mais simples poss vel pg ctl restart Para reiniciar o postmaster aguardando o t rmino da parada e da inicializa o pg ctl w restart Para reiniciar usando a porta 5433 e desativando o fsync ap s o rein cio pg ctl o F p 5433 restart 83 Exibir o status do postmaster Abaixo segue uma um exemplo da sa da de status mostrada pelo pg ctl pg ctl status pg ctl postmaster is running pid 13718 Command line was usr local pgsqgql bin postmaster D usr local pgsql data p 5433 B 128 Esta a linha de comandos que seria usada no modo de rein cio Consulte tamb m postmaster Guia do Administrador do PostgreSQL pe_ctl 84 pg controldata Nome pg controldata exib
95. mas pode ser evitado escrev la definindo a vari vel de ambiente PGDATA o que conveniente porque depois o servidor de banco de dados postmaster poder localizar o diret rio dos bancos de dados usando a mesma vari vel E codifica o encoding codifica o Seleciona a codifica o do banco de dados de gabarito Ser tamb m a codifica o padr o para todos os bancos de dados que vierem a ser criados a menos que seja trocada por uma outra Para que a funcionalidade de codifica o possa ser usada esta deve ter sido habilitada em tempo de compila o quando tamb m pode ser selecionado o valor padr o para esta op o locale local Define a regi o padr o para o agrupamento de banco de dados Se esta op o n o for especificada a regi o herdada do ambiente em que o initdb executa lc collate regi o lc ctype regi o lc messages regi o lc monetary regi o lc numeric regi o lc time regi o Como 1ocale mas somente define a regi o para a categoria especificada U username USername usernam Especifica o nome do superusu rio do banco de dados Por padr o o nome do usu rio efetivo executando O initdb N o importa realmente qual o nome do superusu rio mas deve se preferir manter o nome costumeiro postgres mesmo que o nome do usu rio do sistema operacional seja diferente W pwprompt Faz o initdb solicitar a senha
96. mensagem de erro do servidor ser exibida Consulte o comando CREATE DATABASE e o aplicativo psql para ver as causas poss veis Ambiente PGDATABASE Se estiver definida especifica o nome do banco de dados a ser criado a menos que tenha sido informado na linha de comando PGHOST PGPORT PGUSER Par metros padr o para a conex o PGUSER tamb m determina o nome do banco de dados a ser criado caso n o seja informado na linha de comando ou atrav s de PGDATABASE Exemplos Para criar o banco de dados demo usando o servidor de banco de dados padr o S createdb demo CREATE DATABASE A resposta a mesma que teria sido recebida se fosse executado o comando SQL CREATE DATABASE Para criar o banco de dados demo usando o servidor na m quina eden a porta 5000 o esquema de codifica o LATIN1 e vendo o comando subjacente createdb p 5000 h eden E LATIN1 e demo CREATE DATABASE demo WITH ENCODING LATIN1 CREATE DATABASE Consulte tamb m dropdb CREATE DATABASE 10 createlang Nome createlang cria uma nova linguagem procedural do PostgreSQL Sinopse createlang op es de conex o nome da linguagem nome ba createlang op es de conex o list l l nome bd Descri o O createlang um utilit rio para adicionar uma nova linguagem de programa o a um banco de dados do Post greSQL O createlang pode tratar todas as linguagens fornecidas junto com a distribui
97. ncia especificada n o existe Descri o O comando DROP SEQUENCE remove do banco de dados o gerador de n meros segiienciais Na implementa o at ual das segii ncias como tabelas especiais este comando funciona de maneira an loga ao comando DROP TABLI Ea Notas DROP SEQUENCE O comando DROP SEQUENCE uma extens o do PostgreSQL linguagem Consulte o comando CREATE SE QUE NC E para obter informa es sobre como criar segii ncias Utiliza o Para remover do banco de dados a seq ncia serial DROP SEQUENCE serial Compatibilidade SQL92 N o existe o comando DROP SE QUE NCE no SQL92 DROP TABLE Nome DROP TABLE remove uma tabela Sinopse DROP TABLE Entradas nome nome CASCADE RESTRICT 1 O nome opcionalmente qualificado pelo esquema de uma tabela existente a ser removida CASCADE Remove automaticamente os objetos que dependem da tabela como vis es RESTRICT Recusa remover a tabela se existirem objetos dependentes Este o padr o Sa das DROP TABLI mm Mensagem retornada se o comando for executado com sucesso ERROR table nom does not exist Se a tabela especificada n o existe no banco de dados Descri o O comando DROP poder ficar sem lin ABLI has mas n o ser removida usando o comando
98. o Sinopse CREATE CONSTRAINT TRIGGER nome AFTER eventos O rela o restri o atributos FOR EACH ROW EXECUTE PROCEDURE fun o args Entradas nome O nome do gatilho de restri o eventos As categorias dos eventos para as quais este gatilho deve ser disparado rela o O nome opcionalmente qualificado pelo esquema da rela o cujos eventos disparam o gatilho restri o Especifica o da restri o atributos Atributos da restri o fun o args Fun o a ser chamada como parte do processamento do gatilho Sa das CREATE TRIGGER Mensagem retornada se o comando for executado com sucesso Descri o O comando CRE CREATE CONSTRAINT TRIGGER ATE CONSTRAINT TRIGGI pg_dump para criar gatilhos especiais para a integridade referencial N o h a inten o de ser para uso geral ER utilizado dentro do comando CRE AT E ALT ER TABLE e pelo CREATE CONVERSION Nome CREATE CONVERSION cria uma convers o definida pelo usu rio Sinopse CREATE DEFAULT CONVERSION nome da convers o FOR codifica o de origem TO codifica o de destino FROM nome da fun o Descri o O comando CREATE CONVERSION cria uma nova convers o de codifica o Os nomes das convers es podem ser usados na fun o CONVERTO para especificar uma convers o de codi
99. o correspondendo ao nome especificado Todas estas restri es ser o exclu das OWNER Esta forma muda o dono da tabela ndice sequ ncia ou vis o para o usu rio especificado E necess rio ser o dono da tabela para executar o comando ALTER TABLE exceto para a forma ALTER TABLE OWNER que somente pode ser executada por um superusu rio Notas A palavra chave COLUMN apenas informativa podendo ser omitida Na atual implementa o de ADD COLUMN as cl usulas valor padr o e NOT NULL n o s o suportadas para a nova coluna A nova coluna sempre criada com todos os valores nulos Pode ser usada a forma SET DEFAULT do comando ALTER TABLE para definir o valor padr o mais tarde Os valores atuais das linhas existentes poder o ser atualizados posteriormente para o novo valor padr o usando o comando UPDATE If you want to mark the column non null use the SET NOT NULL form after you ve entered non null values for the column in all rows O comando DROP COLUMN n o remove fisicamente a coluna simplemente torna a coluna invis vel para as oper a es SQL As pr ximas inclus es e atualiza es na tabela armazenam nulo para a coluna Portanto excluir uma coluna r pido mas n o reduz imediatamente o espa o em disco da tabela uma vez que o espa o ocupado pela coluna exclu da n o reorganizado O espa o reorganizado ao longo do tempo quando as linhas existentes v o sendo
100. o dono e podem incluir alguns privil gios para PUBLIC dependendo do tipo do objeto como foi explicado acima O primeiro comando GRANT ou REVOKE em um objeto gera uma inst ncia dos privil gios padr o GRANT produzindo por exemplo miriam arwdRxt e em seguida modifica esta inst ncia de acordo com a req uisi o solicitada Exemplos Conceder para todos os usu rios o privil gio de inserir na tabela filmes GRANT INSERT ON filmes TO PUBLIC Conceder todos os privil gios na vis o tipos para o usu rio manuel GRANT ALL PRIVILEGES ON tipos TO manuel Compatibilidade SQL92 A palavra chave PRIVILEGES em ALL PRIVILEGES requerida O SQL n o aceita a concess o de privil gios em mais de uma tabela no mesmo comando A sintaxe do SQL92 para o comando GRANT permite conceder privil gios individuais para as colunas da tabela e permite conceder o privil gio de conceder o mesmo privil gio para outros GRANT privil gio ON objeto coluna 1 TO PUBLIC nome do usu rio WITH GRANT OPTION O SQL permite conceder o privil gio USAGE em outros tipos de objeto CHARACTER SET COLLATION TRANSLATION DOMAIN O privil gio TRIGGER foi introduzido no SQL99 O privil gio RULE uma extens o do PostgreSQL Consulte tamb m REVOKE INSERT Nome INSERT cria novas linhas em uma tabela Sinopse INSERT
101. o next val CREATE SEQUENCE Cuidado Podem ocorrer resultados n o esperados ao se especificar um valor maior do que 1 para cache em um objeto de sequ ncia utilizado ao mesmo tempo por v rios servidores backends Cada servidor aloca e armazena em mem ria valores sucessivos da sequ ncia ao fazer um nico acesso ao objeto de sequ ncia e incrementa o ltimo valor 1ast value na forma correspondente Ent o a pr xima uti liza o de cache 1 da fun o nextval neste servidor simplesmente retorna os valores pr alocados sem tocar no objeto compartilhado Desta forma todos os valores alocados nesta sess o mas n o uti lizados s o perdidos ao final da sess o Al m disso embora seja garantido que os diversos servidores alocam valores distintos da sequ ncia os valores podem ser gerados fora de sequ ncia quando s o levados em conta todos os servidores Por exemplo com um cache de 10 o servidor A pode reservar os valores de 1 a 10 e usar o pr ximo valor igual a 1 ent o o servidor B pode reservar os valores de 11 a 20 e usar o pr ximo valor igual a 11 antes do servidor A ter usado o pr ximo valor igual a 2 Assim com um valor para cache igual a 1 seguro assumir que os valores da fun o nextval s o gerados sequencialmente com um valor para cache maior do que 1 pode se assumir que os valores da fun o nextval s o todos distintos mas n o que sejam gerados de forma puramente sequencial Al m disso o valor do campo
102. o possui limita o exceto talvez pelo sistema operacional Exemplos Para exportar um banco de dados pg dump meu bd gt db out Para importar este banco de dados psql d database f db out Para exportar um banco de dados chamado meu bd que cont m objetos grandes para um arquivo tar pg dump Ft b meu bd gt bd tar Para importar este banco de dados com os objetos grandes para um banco de dados existente chamado novo ba pg restore d novo bd bd tar 36 pg dump Hist rico O utilit rio pg dump apareceu pela primeira vez no Postgres95 vers o 0 02 Os formatos de sa da n o texto puro foram introduzidos no PostgreSQL vers o 7 1 Consulte tamb m pg dumpall pg restore psql Guia do Administrador do PostgreSQL 37 pg dumpall Nome pg dumpall extrai um agrupamento de bancos de dados do PostgreSQL para um arquivo script Sinopse pg dumpall op es Descri o O pg dumpall um utilit rio para exportar dump todos os bancos de dados do PostgreSQL para um arquivo script O arquivo script cont m comandos SQL que podem ser usados como entrada do psql para restaurar os bancos de dados Exporta chamando pg dump para cada banco de dados do PostgreSQL O pg dumpall tam b m exporta objetos globais que s o comuns a todos os bancos de dados O pg dump n o salva estes objetos Atualmente isto inclui informa es sobre os usu rios do banco de dados e os grupos Portanto
103. onde tabela consulta especifica qualquer express o de sele o sem as cl usulas ORDER BY LIMIT ou FOR UPDATE ORDER BY e LIMIT podem aparecer na subexpress o se estiver entre par nteses Sem os par n teses estas cl usulas se aplicam ao resultado da UNION e n o na sua express o de entrada da direita O operador UNION computa a cole o conjunto uni o das linhas retornadas pelas consultas envolvidas Os dois comandos SELECT que representam os operandos diretos do UNION devem produzir o mesmo n mero de colunas e as colunas correspondentes devem possuir tipos de dado compat veis O resultado de uma UNION n o cont m nenhuma linha repetida a menos que a op o ALL all seja especificada ALL impede a elimina o das linhas repetidas Quando existem v rios operadores UNION no mesmo comando SELECT estes s o processados da esquerda para a direita a menos que outra ordem seja definida pelo uso de par nteses Atualmente FOR UPDATE n o deve ser especificado nem no resultado nem nas entradas de uma UNION A cl usula INTERSECT tabela consulta INTERSECT ALL tabela consulta ORDER BY express o ASC DESC USING operador LIMIT contador ALL OFFSET in cio SELECT onde tabela consulta especifica qualquer express o de sele o sem as cl usulas ORDER BY LIMIT ou FOR UPDATE INTERSECT semelhante a UNION exceto que retorna somente as linhas presentes nas sa das das
104. op es de linha de comando controlam os par metros de conex o com o servidor de banco de dados h hospedeiro host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p porta port porta Especifica a porta Internet TCP IP ou o soquete do dom nio Unix local onde o servidor est aguardando as conex es O padr o para o n mero da porta 5432 ou o valor da vari vel de ambiente PGPORT se estiver definida U nome do usu rio Nome do usu rio para se conectar For a a solicita o da senha Deve acontecer automaticamente se o servidor requer autentica o por senha As formas longas das op es est o presentes apenas em algumas plataformas Ambiente PGDATABASE PGHOST PGPORT PGUSER Par metros padr o para a conex o Diagn sticos Connection to database templatel failed connectDBStart connect failed No such file or directory Is the postmaster running locally and accepting connections on Unix socket tmp s PGSQL 5432 O pg dump n o p de se conectar ao servidor PostgreSQL usando o computador e a porta especificados Se esta mensagem for recebida deve se garantir que o servidor est executando na m quina especificada e usando a porta especificada 35 pg dump Nota O pg dump executa internamente comandos SELECT Se houver problema ao
105. para a coluna nome CREATE TABLE distribuidores did DECIMAL 3 nome VARCHAR 40 UNIQUI mm O comando acima equivalente ao mostrado abaixo especificado atrav s de uma restri ao de tabela CREATE TABLE distribuidores did DECIMAL 3 nome VARCHAR 40 UNIQUE nome Compatibilidade O comando CREATE TABLE est em conformidade com o SQL92 Intermedi rio e com um subconjunto do SQL99 com exce es listadas abaixo e nas descri es acima Tabelas tempor rias Pi Al m da tabela tempor ria local o SQL92 tamb m define a declara o CREATE GLOBAL TEMPORARY TABLI Tabelas tempor rias globais tamb m s o vis veis por outras sess es Para as tabelas tempor rias existe uma cl usula opcional ON COMMIT CREATE GLOBAL LOCAL TEMPORARY TABLE nome da tabela ON COMMIT DELETE PRESE A cl usula ON COMMIT especifica se a tabela tempor ria deve ou n o ser esvaziada quando o comando COMMIT executado Se a cl usula ON COMMIT for omitida o SQL92 especifica como padr o ON COMMIT DELETE ROWS Entretanto o comportamento do PostgreSQL sempre ON COMMIT PRESERVE ROWS Restri o NULL A restri o NULL na verdade uma n o restri o uma extens o do PostgreSQL ao SQL92 inclu da para manter a compatibilidade com alguns outros
106. para se conectar ao servidor e n o a senha do novo usu rio Ambiente PGHOST PGPORT PGUSER Par metros padr o para a conex o Diagn sticos CREATE USER O usu rio foi criado com sucesso createuser creation of user nome do usu rio failed Aconteceu algum erro O usu rio n o foi criado Se houver uma condi o de erro a mensagem de erro do servidor ser exibida Consulte o comando CREATE USER e o aplicativo psql para ver as causas poss veis Exemplos Para criar o usu rio joe1 no servidor de banco de dados padr o createuser joel Is the new user allowed to create databases y n n Shall the new user be allowed to create more new users y n n CREATE USER Criar o mesmo usu rio joel usando o servidor na m quina eden porta 5000 evitando o pedido de informa es e vendo o comando subjacente createuser p 5000 h eden D A e joel CREATE USER joel NOCREATEDB NOCREATEUSER CREATE USER 16 createuser Consulte tamb m dropuser CREATE USER 17 dropdb Nome dropdb remove um banco de dados do PostgreSQL Sinopse dropdb op es nome bd Descri o O dropdb remove do PostgreSQL um banco de dados existente Para executar este comando necess rio ser um superusu rio ou o dono do banco de dados O dropdb um script envolt rio que usa o comando SQL DROP DATABASE atrav s do terminal interativo do PostgreSQL psql Portanto n o existe nad
107. pela primeira vez no PostgreSQL 7 1 Consulte tamb m Guia do Programador do PostgreSQL 30 pg dump Nome pg dump extrai um banco de dados do PostgreSQL para um arquivo script ou de exporta o Sinopse pg dump op es nome bd Descri o O pg dump um utilit rio para salvar um banco de dados do PostgreSQL em um arquivo script ou de exporta o Os arquivos script s o no formato texto puro e cont m os comandos SQL necess rios para reconstruir o banco de dados no estado em que este se encontrava no momento que foi salvo Para efetuar a restaura o atrav s destes scripts deve ser usado o psql Estes scripts podem ser usados inclusive para reconstruir o banco de dados em outras m quinas com outras arquiteturas e com algumas modifica es at em outros SGBDR Al m do script existem outros formatos de exporta o feitos para serem usados em conjunto com o pg restore para reconstruir o banco de dados Permitem ao pg restore selecionar o que deve ser restaurado ou mesmo mudar a ordem de restaura o dos itens Estes formatos de exporta o tamb m s o projetados para serem port veis entre arquiteturas O pg dump salva as informa es necess rias para regerar todos os tipos fun es tabelas ndices agrega es e operadores definidos pelo usu rio Adicionalmente todos os dados s o salvos no formato texto para que possam ser prontamente importados bem como tratados por ferramentas de edi
108. pode ser usada nos contextos onde as linha retornadas n o podem ser claramente relacionadas com as linhas das tabelas por exemplo n o pode ser usado em uma agrega o A cl usula FOR UPDATE pode vir antes da cl usula LIMIT para manter a compatibilidade com aplicativos pr 7 3 Entretanto como ser executada ap s a cl usula LIMIT recomenda se que seja escrita ap s esta cl sula Utiliza o Para efetuar a jun o da tabela filmes com a tabela distribuidores SELECT f titulo f did d nome f data prod f tipo FROM distribuidores d filmes f WHERE f did d did titulo did nome data prod tipo The Third Man 101 British Lion 1949 12 23 Drama The African Queen 101 British Lion 1951 08 11 Romance Une Femm st une Femm 102 Jean Luc Godard 1961 03 12 Romance Vertigo 103 Paramount 1958 11 14 A o Becket 103 Paramount 1964 02 03 Drama 48 Hrs 103 Paramount 1982 10 22 A o War and Peace 104 Mosfilm 1967 02 12 Drama West Side Story 105 United Artists 1961 01 03 Musical Bananas 105 United Artists 1971 07 13 Com dia Yojimbo 106 Toho 1961 06 16 Drama There s a Girl in my Soup 107 Columbia 1970 06 11 Com dia Taxi Driver 107 Columbia 1975 05 15 A o Absence of Malice 107 Columbia 1981 11 15 A o Storia di una donna 108 Westward 1970 08 15 Romance The King and I 109 20th Century Fox 110 Bavaria Atelier Das Boot Bed Knobs and Broomsticks 111 Walt Disney 17
109. recebe o valor atual do estado e o item atual de dado da entrada e retorna o valor do pr ximo estado tipo dado estado O tipo de dado do valor do estado da agrega o func final O nome da fun o final chamada para calcular o resultado da agrega o ap s todos os dados da entrada terem sido percorridos A fun o deve possuir um nico argumento do tipo tipo dado estado O tipo de dado do valor da agrega o definido pelo tipo do valor retornado por esta fun o Se func final n o for especificado ent o o valor do estado final utilizado como sendo o resultado da agrega o e o tipo da sa da fica sendo o tipo dado estado cond inicial A atribui o inicial para o valor do estado Deve ser uma constante literal na forma aceita pelo tipo de dado tipo dado estado Se n o for especificado o valor do estado come a com NULL CREATE AGGREGATE Sa das CREATE AGGREGATE Mensagem retornada se o comando for executado com sucesso Descri o O comando CREATE AGGREGATE permite ao usu rio ou ao programador estender as funcionalidades do PostgreSQL criando novas fun es de agrega o Algumas fun es de agrega o para tipos base como min integer e avg double precision est o presentes na distribui o base Se forem criados tipos novos ou se houver a necessidade de uma fun o de agrega o que n o esteja presente ent o o comando CREATE AGGREGATE pode ser utiliza
110. referenciada 1 MATCH tipo corresp ON DELETE a o ON UPDATE a o restri o da tabela A restri o REFERENCES especifica que um grupo de uma ou mais colunas da nova tabela deve conter so mente valores correspondentes aos valores das colunas referenciadas coluna referenciada da tabela referenciada tabela referenciada Sea coluna referenciada for omitida a chave prim ria da tabela referenciada utilizada As colunas referenciadas devem pertencer a uma restri o de chave prim ria ou de unicidade da tabela referenciada Os valores adicionados a estas colunas s o comparados com os valores das colunas referenciadas da tabela referenciada utilizando o tipo de compara o Existem 3 tipos de compara o MATCH FULL MATCH PARTIAL e o tipo de compara o padr o se nada for especificado MATCH FULL n o permite que uma coluna de uma chave estrangeira com v rias colunas seja nula a menos que todas as colunas da chave estrangeira sejam nulas O tipo de compara o padr o permite que algumas colunas da chave estrangeira sejam nulas enquanto outras colunas da chave estrangeira n o s o nulas MATCH PARTIAL ainda n o est implementado Adicionalmente quando os dados das colunas referenciadas s o modificados certas a es s o realizadas nos dados das colunas desta tabela A cl usula ON DELETE especifica a a o a ser executada quando uma linha referenciada da tabela referenciada exclu
111. rio home do usu rio Sif psql set disable completion on Sendif Esta n o uma funcionalidade do psql mas sim do readline Leia a sua documenta o para obter mais detalhes Ambiente HOME Diret rio do arquivo de inicializa o psqlrc e do arquivo de hist rico dos comandos psqgl history PAGER Se o resultado da consulta n o couber na tela exibido atrav s deste comando Os valores t picos s o more e less O padr o depende da plataforma A utiliza o de um paginador pode ser desabilitado atrav s do comando pset PGDATABASE Banco de dados padr o para se conectar PGHOST PGPORT PGUSER Par metros padr o para a conex o PSOL EDITOR EDITOR VISUAL Editor utilizado pelo comando Ye As vari veis s o examinadas na ordem listada a primeira que estiver definida utilizada 66 SHI TM psql ELL Comando executado pelo comando PDIR Diret rio para armazenar os arquivos tempor rio O padr o tmp Arquivos e Antes de come ar o psql tenta ler e executar os comandos do arquivo HOME psqlrc Este pode ser usado para configurar o cliente ou o servidor conforme se deseje usando os comandos N set e SET e O hist rico de linha de comando armazenado no arquivo SHOME psqgl history Notas e Nas vers es iniciais o psql permitia o primeiro argumento de um comando de contrabarra de uma nica letra come ar logo ap s
112. se criar um dom nio e us lo em vez de especificar as restri es em cada tabela individualmente Exemplos Este exemplo cria o tipo de dado cod nacao c digo da na o usando o em seguida na especifica o da tabela CREATE DOMAIN cod nacao char 2 NOT NULL CREATE TABLE thbl nacao id INT4 nacao cod nacao Compatibilidade O padr o SQL99 define o comando CREATE DOMAIN mas especifica que o nico tipo de restri o permitido o de verifica o CHECK As restri es de verifica o para os dom nios ainda n o s o aceitas pelo PostgreSQL Consulte tamb m DROP DOMAIN Guia do Programador do PostgreSQL CREATE FUNCTION Nome CR EATE FUNCTION cria uma fun o Sinopse CREATE OR REPLACE FUNCTION nome tipo do argumento 1 RETURNS tipo retornado LANGUAGE nome da linguagem IMMUTABLE STABLE VOLATILE CALLED ON NULL INPUT RETURNS NULL ON NULL INPUT STRICT EXTERNAL SECURITY INVOKER EXTERNAL SECURITY DEFINER AS defini o AS arquivo objeto s mbolo de liga o WITH atributo Descri o O comando CREATE FUNCTION cria uma nova fun o O comando CREATE OR REPLACE FUNCTION tanto cria uma nova fun o quanto substitui uma fun o existente O usu rio que cria a fun o se torna o seu d
113. ser mesclada em uma nica coluna Entretanto declara es de colunas novas e herdadas com o mesmo nome n o precisam especificar restri es id nticas todas as restri es fornecidas em qualquer uma das declara es s o mescladas sendo todas aplicadas nova tabela Se a nova tabela especificar explicitamente um valor padr o para a coluna este valor padr o substitui qualquer valor padr o das declara es herdadas Fora isso toda tabela ascendente que especificar um valor padr o para a coluna deve especificar o mesmo valor ou um erro ser gerado WITH OIDS ou WITHOUT OIDS Esta cl usula opcional especifica se as linhas da nova tabela devem possuir OIDs identificadores do objeto O padr o possuir OIDs Se a nova tabela herdar de qualquer tabela que possua OIDs ent o a cl usula WITH OIDS for ada mesmo que no comando esteja especificado WITHOUT OIDS CREATE TABLE A especifica o de WITHOUT OIDS permite ao usu rio suprimir a gera o dos OIDs para as linhas da tabela Este procedimento pode ser interessante em tabelas grandes porque reduz o consumo de OIDs e portanto adia o recome o deste contador de 32 bits Quando o contador recome a n o mais poss vel assumir a sua unicidade o que reduz muito a sua utilidade CONSTRAINT nome da restri o Um nome opcional para a restri o da coluna ou da tabela Se n o for especificado o nome ser gerado pelo sistema NOT NULL Valores nulos
114. ser removida rela o O nome opcionalmente qualificado pelo esquema da rela o qual a regra se aplica CASCADE Remove automaticamente os objetos que dependem da regra RESTRICT Recusa remover a regra se existirem objetos dependentes Este o padr o Sa das DROP RULE Mensagem retornada se o comando for executado com sucesso ERROR Rule nome not found Esta mensagem ocorre quando a regra especificada n o existe Descri o O comando DROP RULE remove uma regra do conjunto de regras do PostgreSQL O PostgreSQL p ra imediata mente de imp la e remove sua defini o dos cat logos do sistema Notas O comando DROP RULE uma extens o do PostgreSQL linguagem Consulte o comando CRE Utiliza o ATE RUL Para remover a regra nova regra DROP RULE nova regra ON minha tabela Compatibilidade SQL92 N o existe o comando DROP RULI E no SQL92 E para obter informa es sobre como criar regras DROP RULE DROP SCHEMA Nome DROP SCHEMA remove um esquema Sinopse DROP SCHEMA nome CASCADE RESTRICT Entradas nome O nome do esquema CASCADE Remove automaticamente os objetos tabelas fun es etc que est o contidos no esquema RESTRICT Recusa remover o esquema se este contiver algum objeto Este o padr o Sa das DROP SCHEMA Mensagem retornada se o esquema for exclu do com sucesso
115. tabela argumento 1 lista de ali s de coluna lista de defini o de coluna nome da fun o de tabela argumento 1 AS lista_de defini o_de_coluna tipo de jun o item de ON condi o de jun o Entradas express o USING lista de coluna de jun o O nome de uma coluna da tabela ou uma express o nome de sa da Especifica um outro nome para a coluna retornada utilizando a cl usula AS Este nome utilizado principal mente como o t tulo da coluna exibida Tamb m pode ser utilizado para fazer refer ncia ao valor da coluna nas cl usulas ORDER BY e GROUP BY Por m o nome de sa da n o pode ser usado nas cl usulas WHERE e HAVING nestes casos a express o deve ser escrita novamente item de A refer ncia a uma tabela uma subconsulta uma fun o de tabela ou uma cl usula de jun o Veja abaixo para obter detalhes SELECT condi o Uma express o booleana produzindo um resultado falso ou verdadeiro Veja a descri o das cl usulas WHERE e HAVING abaixo select Um comando SELECT com todas as suas funcionalidades exceto as cl usulas ORDER BY LIMIT OFFSET e FOR UPDATE mesmo estas podem ser utilizadas quando o SELECT est entre par nteses Os itens da cl usula FROM podem conter nome da tabela O nome opcionalmente qualificado pelo esquema de uma tabela ou de uma vis o existente Se ONLY for especificado somente est
116. tempo de execu o cujo valor pode ser mudado valor O novo valor do par metro Pode ser usado DEFAULT para especificar a atribui o do valor padr o do par metro Listas de cadeias de caracteres s o permitidas mas constru es mais complexas podem precisar estar entre ap strofos ou entre aspas Descri o O comando SET altera os par metros de configura o de tempo de execu o Muitos par metros de tempo de execu o descritos no Guia do Administrador podem ser mudados durante a execu o pelo comando SET Mas alguns requerem privil gio de superusu rio para serem mudados e outros n o podem ser mudados ap s a ini cializa o do servidor ou o in cio da sess o Observe que o comando SET afeta apenas os valores utilizados na sess o corrente Se o comando SET ou SET SESSION for executado dentro de uma transa o que for abortada mais tarde os efeitos do comando SET ir o desaparecer quando a transa o for desfeita Este comportamento representa uma mudan a do PostgreSQL com rela o s vers es anteriores a 7 3 onde os efeitos do SET n o eram desfeitos ap s um erro Uma vez que a transa o envolt ria seja efetivada os efeitos persistem at o final da sess o a menos que seja redefinido por outro comando SET SET Os efeitos do comando SET LOCAL duram apenas at o final da transa o corrente seja esta efetivada ou n o Um caso especial ocor
117. text EATE VIEW premiados AS SELECT titulo lancamento FROM filmes WHERE premios IS NOT NULL Q o Q z Deve se perceber que os comandos individuais n o terminam por ponto e v rgula Abaixo est mostrada uma forma equivalente para se obter o mesmo resultado T CREATE SCHEMA hollywood CREATE TABLE hollywood filmes titulo text lancamento date premios text CREATE VIEW hollywood premiados AS SELECT titulo lancamento FROM hollywood filmes WHERE premios IS NOT NULL CREATE SCHEMA Compatibilidade SQL92 O SQL92 permite a cl usula DEFAULT CHARACTER SET no comando CREATE SCHEMA bem como mais tipos de subcomandos do que os atualmente aceitos pelo PostgreSQL O SQL92 especifica que os subcomandos presentes em CREATE SCHEMA podem aparecer em qualquer ordem Na implementa o atual do PostgreSQL n o s o tratados todos os casos de refer ncias frente nos subcomandos pode ser que seja necess rio reordenar os subcomandos para evitar refer ncias frente No SQL92 o dono do esquema sempre possui todos os objetos que este cont m O PostgreSQL permite que os esquemas contenham objetos que perten am a outros usu rios al m do dono do esquema o que somente acontece se o dono do esquema conceder o privil gio CREATE para outro usu rio CREATE SEQUENCE
118. tipo como um todo Por exemplo o tipo name permite que seus chars constituintes sejam acessados desta forma Um tipo point 2 D pode permitir que seus dois componentes sejam acessados como point 0 e point 1 Observe que esta facilidade somente funciona para tipos de comprimento fixo cuja forma interna seja exatamente uma sequ ncia de N campos de tamanho fixo id nticos Um tipo de comprimento vari vel para permitir ndices deve possuir a representa o interna generalizada usada por array in e array out Por raz es hist ricas ou seja claramente errado mas muito tarde para mudar os ndices das matrizes de comprimento fixo come am em zero enquanto ndices das matrizes de comprimento vari vel come am em um Notas Os nomes dos tipos definidos pelo usu rio n o podem come ar pelo caractere sublinhado e podem ter o comprimento de apenas 62 caracteres ou de uma maneira geral NAMEDATALEN 2 em vez dos NAMEDATALEN 1 caracteres permitidos para os outros nomes Os nomes de tipo come ados por sublinhado s o reservados para os nomes dos tipos matriz criados internamente ee 99 Exemplos Este exemplo cria o tipo de dado caixa e em seguida usa o tipo na defini o de uma tabela CREATE TYPE caixa INTERNALLENGTH 16 INPUT meu procedimento 1 OUTPUT meu procedimento 2 CREATE TABLE thbl caixa id INT4 descricao caixa Se a estru
119. um usu rio em um grupo n o cria o usu rio Analogamente excluir um usu rio de um grupo n o exclui o usu rio do banco de dados Use o CREATE GROUP para criar um novo grupo eo DROP GROUP para remover um grupo Utiliza o Incluir usu rios em um grupo ALTER GROUP arquitetura ADD USER joana alberto Excluir um usu rio de um grupo ALTER GROUP ALTER GROUP engenharia DROP USER margarida Compatibilidade SQL92 N o existe o comando ALTER GROUP no SQL92 O conceito de roles similar ao de grupos ALTER TABLE Nome ALTER TABLE altera a defini o de uma tabela ED Sinopse ALTER TABLE ONLY tabela A ADD COLU column tipo restri o de coluna ALTER TABLE ONLY tabela A DROP COLU coluna RESTRICT CASCADE J ALTER TABLE ONLY tabela K ALTER COLUMN coluna SE DEFAULT valor DROP DEFAULT ALTER TABLE ONLY tabela ALTER COLUMN coluna SE DROP NOT NULL ALTER TABLE ONLY tabela x ALTER COLUMN coluna SET STATISTICS inteiro ALTER TABLE ONLY tabela K ALTER COLUMN coluna SET STORAGE PLAIN EXTERNAL EXTEND ALTER TABLE ONLY tabela x RENAME COLUMN coluna TO novo nome da coluna ALTER TABLE tabela RENAME TO novo nome da tabela ALTER TABLE ONLY tabela
120. uma compara o utilizando o operador Os testes mostraram que os ndices hash do PostgreSQL s s o semelhantes ou mais lentos do que os ndices B tree e que o tamanho do ndice e o tempo para gerar os ndices nash s o muito piores Os ndices hash tamb m t m seu desempenho degradado sob alta concorr ncia Por estes motivos a utiliza o dos ndices hash desaconselhada Atualmente somente os m todos de acesso B tree e Gist suportam ndices com mais de uma coluna Por padr o at 32 chaves podem ser especificadas este limite pode ser alterado na gera o do PostgreSQL Na implementa o atual somente o B t ree suporta ndices nicos Uma classe de operador pode ser especificada para cada coluna de um ndice A classe de operador identifica os operadores a serem utilizados pelo ndice desta coluna Por exemplo um ndice B t ree sobre inteiros de quatro bytes vai utilizar a classe de operadores int 4 ops esta classe de operadores inclui fun es de compara o para inteiros de quatro bytes Na pr tica a classe de operadores padr o para o tipo de dado do campo normalmente suficiente O ponto principal em haver classes de operadores que para alguns tipos de dado pode haver mais de uma ordena o que fa a sentido Por exemplo pode se desejar ordenar o tipo de dado do n mero complexo tanto pelo valor absoluto quanto pela parte real o que pode ser feito definindo se duas classes de operadores para o tipo de d
121. 31 pg dump a data only Exporta somente os dados n o o esquema defini es dos dados Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg_restore p blobs Exporta os objetos bin rios grandes blobs clean Gera comandos para excluir drop os objetos do banco de dados precedendo os comandos para cri los Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg restore create Inicia a sa da por um comando para criar o pr prio banco de dados e se conectar ao banco de dados criado Com um script assim n o importa em qual o banco de dados se est conectado antes de executar o script Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg restore d inserts Exporta os dados como comandos INSERT em vez de copy Torna a importa o muito lenta mas os arquivos exportados s o mais facilmente portados para outros bancos de dados SQL D column inserts attribute inserts Exporta os dados como comandos INSERT com nomes expl citos das colunas INSERT INTO tabela coluna VALUES tornando a importa o muito lenta mas necess rio se for desejado mu dar a ordem das colunas f arquivo file arquivo Envia a sa da para o arqui
122. 7 sec Empty 0 Tup 1000 Vac 3000 Deleted 300 Deleted 300 Deleted 300 Deleted 30 Total CPU 0 05s 0 45u sec elapsed 0 59 sec Utiliza o regression regression gt VACUUM VERBOSE INFO Relation onek INFO Index onek uniquel INFO Index onek unique2 INFO Index onek hundred INFO Index onek stringul INFO Removed 3000 tuples INFO Pages 94 Changed 0 INFO Analyzing onek VACUUM Compatibilidade SQL92 N o existe o comando VACUUM no SQL92 O 0 0 Keep 0 00 UnUsed 0 II Aplicativos para a esta o cliente do PostgreSQL Esta parte cont m informa es de refer ncia para os aplicativos e utilit rios usados na esta o cliente do Post greSQL Nem todos os comandos s o de uso geral alguns requerem privil gios especiais para serem executados A caracter stica comum destes aplicativos que podem ser executados a partir de qualquer computador indepen dentemente de onde o servidor de banco de dados esteja instalado clusterdb Nome clusterdb reagrupa as tabelas de um banco de dados do PostgreSQL Sinopse clusterdb op es de conex o table t tabela nome ba clusterdb op es de conex o all a Descri o O clusterdb um utilit rio para reagrupar as tabelas de um banco de dados do PostgreSQL Encontra as tabelas que foram anteriormente agrupadas reagrupando as novamente usando o mesmo ndice que foi utilizado antes As tabelas q
123. ABLE filmes cod CHAR 5 titulo VARCHAR 40 did DECIMAL 3 data prod DATE tipo VARCHAR 10 duracao INTERVAL HOUR TO MINUTE CONSTRAINT pk filmes PRIMARY KEY cod titulo Definir a restri o de chave prim ria para a tabela distribuidores Os dois exemplos abaixo s o equivalentes o primeiro utiliza a sintaxe de restri o de tabela e o segundo utiliza a nota o de restri o de coluna CREATE TABLE distribuidores did DECIMAL 3 nome CHAR VARYING 40 PRIMARY KEY did CREATE TABLE distribuidores did DECIMAL 3 PRIMARY KEY nome VARCHAR 40 O comando abaixo especifica uma constante literal como valor padr o da coluna nome faz com que o valor padr o da coluna did seja gerado como o pr ximo valor de um objeto de sequ ncia faz com que o valor padr o da coluna data ins seja a data e hora em que a linha inserida CREATE TABLE distribuidores nome VARCHAR 40 DEFAULT luso filmes did INTEGER DEFAULT NEXTVAL seq distribuidores data ins TIMESTAMP DEFAULT CURRENT TIMESTAMP Definir duas restri es de coluna NOT NULL na tabela distribuidores sendo que uma delas recebe um nome explicito CREATE TABLE distribuidores did DECIMAL 3 CONSTRAINT nao_nulo NOT NULL nome VARCHAR 40 NOT NULL CREATE TABLE Definir uma restri o de unicidade
124. AIN nome do objeto FUNCTION nome da fun o argi type tipo arg2 INDEX nome do objeto OPERATOR op tipo operando esq tipo operando dir RULE nome da regra ON nome da tabela S S T A nome do objeto UENCE nome do objeto RIGGER nome do gatilho ON nome da tabela TYPE VIEW nome do objeto IS texto nome do objeto Entradas nome do objeto nome da tabela nome da coluna nome da agrega o nome da restri o nome da fun o op nome da regra e nome do gatilho O nome do objeto ao qual o coment rio se refere Os nomes das tabelas agrega es dom nios fun es ndices operadores sequ ncias tipos e vis es podem se qualificados pelo esquema texto O coment rio a ser adicionado Sa das COMMENT Mensagem retornada se o coment rio for adicionado com sucesso COMMENT Descri o O comando COMMENT guarda um coment rio sobre um objeto do banco de dados Os coment rios podem ser facilmente acessados atrav s dos comandos Nada d e 1 do psql Outras interfaces de usu rio podem aces sar os coment rios utilizando as mesmas fun es nativas usadas pelo psql que s o obj description e col description Para modificar um coment rio basta executar novamente o comando COMMENT para o mesmo objeto Somente um nico coment rio armazenado para cada objeto Para excluir um coment rio escreva NULL no lugar
125. ANGUAGE lanname name lanispl boolean lanpltrusted boolean lanplcallfoid oid lanvalidator oid lanacl aclitem lanname lanispl lanpltrusted lanplcallfoid lanvalidator lanacl H H internal E 0 2246 c E O 2247 sql l E t 0 2248 U Atualmente com exce o das permiss es a defini o de uma linguagem procedural n o pode ser mudada ap s ter sido criada Para poder utilizar uma linguagem procedural deve ser concedido o privil gio USAGE para o usu rio O aplicativo createlang concede automaticamente permiss o para todos se a linguagem for reconhecida como trusted Exemplos Os dois comandos mostrados abaixo executados em seq ncia registram uma nova linguagem procedural e o tratador de chamadas associado CREATE FUNCTION minha_pl_trata_chamada RETURNS language_handler AS libdir minha_p1 ANGUAGE C CREATE LANGUAGE minha pl HANDLER minha pl trata chamada Compatibilidade O comando CREATE LANGUAGE uma extens o do PostgreSQL linguagem Hist rico O comando CREATE LANGUAGE apareceu pela primeira vez no PostgreSQL 6 3 Consulte tamb m createlang CREATE FUNCTION droplang DROP LANGUAGE GRANT REVOKE Guia do Programador do PostgreSQL CREATE OPERATOR Nome CREATE OPERATOR cria um operador
126. BLE Mensagem retornada se a tabela for truncada com sucesso Descri o O comando RUNCA E remove rapidamente todas as linhas da tabela Tem o mesmo efeito do comando DELETE sem a cl usula WHERE mas como n o varre a tabela mais r pido E mais vantajoso para tabelas grandes O comando RUNCA E n o pode ser utilizado dentro de um bloco de transa o delimitado por BEGIN COMMIT porque n o existe a possibilidade de desfaz lo Utiliza o Truncar a tabela tb1 grande TRUNCATE TABLE tbl grande TRUNCATE Compatibilidade SQL92 N o existe o comando TRUNCATE no SQL92 UNLISTEN Nome UNLISTEN p ra de escutar uma notifica o Sinopse UNLISTEN nome notifica o 3 Entradas nome notifica o O nome de uma condi o de notifica o registrada previamente Todos os registros de escuta atuais deste processo servidor s o removidos Sa das UNLISTEN Constata que o comando foi executado Descri o 2 O comando UNLISTEN utilizado para remover um registro de NOTIFY existente UNLISTEN cancela qualquer registro existente da sess o corrente do PostgreSQL para escutar a condi o de notifica o EJ nome notifica o A condi o especial curinga cancela todos os registros de escuta da sess o corrente O comando NOTIFY cont m uma discuss o mais extensa da utiliza o do comando LISTEN e do coma
127. CRYPTED UNENCRYPTED PASSWORD senha CREATEDB NOCREATEDB CREATEUSER NOCREATEUSER T IN GROUP nome do grupo VALID UNTIL data hora Descri o O comando CREATE USER inclui um novo usu rio em uma inst ncia do PostgreSQL Consulte o Guia do Admin istrador para obter mais informa es sobre o gerenciamento de usu rios e autentica o Apenas os superusu rios do banco de dados podem usar este comando Par metros nome do usu rio O nome do usu rio uid A cl usula SysID pode ser utilizada para especificar o identificador do usu rio sendo criado no PostgreSQL N o de forma alguma necess rio que este identificador corresponda ao identificador do usu rio no UNIX mas algumas pessoas optam por manter o mesmo n mero Se n o for especificado ser utilizado por padr o o maior valor atribu do a um identificador de usu rio acrescido de 1 com m nimo de 100 senha Define a senha do usu rio Se n o se planeja utilizar autentica o por senha pode se omitir esta op o mas o usu rio n o ser capaz de se conectar a um servidor autenticado por senha A senha pode ser definida ou alterada posteriormente atrav s do comando ALTER USER ENCRYPTED UNENCRYPTED 2 Estas palavras chave controlam se a senha armazenada criptografada ou n o na tabela pg shadow 2 Se nenhuma das duas f
128. Consulte o comando GRANT para obter mais informa es Este comando um sin nimo para o comando dp display permissions VN comando Abre outra she11 do Unix ou executa o comando Unix comando Os comandos deixam de ser interpretados e s o enviados para a shel1 como est o Obt m informa o de ajuda para os comandos de contrabarra NV Os diversos comandos d aceitam como par metro um padr o para especificar os nomes dos objetos a serem mostrados Os padr es s o interpretados de forma semelhante aos identificadores SQL onde as letras que n o est o entre aspas s o transformadas em min sculas enquanto as aspas protegem as letras de serem convertidas e permitem a introdu o de espa os em branco nos identificadores Dentro das aspas um par de aspas reduzido para uma nica aspa dentro do nome gerado Por exemplo FOO BAR BAZ interpretado como as fooBARbaz Um nome esquisito se torna Um nome esquisito Mais interessante ainda os padr es para d permitem o uso do significando qualquer sequ ncia de caracteres e o significando qualquer caractere Esta nota o an loga a dos padr es para nomes de arquivos na she1l1 do Unix Os usu rios avan ados tamb m podem utilizar as nota es das express es regulares tal como classe de caracteres por exemplo 0 9 correspondendo a qualquer d gito Para fazer com que os caracteres especiais de padr o sejam interpretad
129. E Conflita com os modos de bloqueio SHARE SHARE ROW EXCLUSIVE EXCLUSIVE e ACCESS EX CLUSIVE Nota Os comandos UPDATE DELETE INSERT obt m este modo de bloqueio na tabela de destino al m do bloqueio access SHARE nas outras tabelas que s o referenciadas Em geral este modo de bloqueio obtido por todo comando que modifica os dados da tabela LOCK SHARE UPDATE EXCLUSIVE MODE Conflita com os modos de bloqueio SHARE UPDATE EXCLUSIVE SHARE SHARE ROW EXCLU SIVE EXCLUSIVE e ACCESS EXCLUSIVE Este modo de bloqueio protege a tabela contra altera es concorrentes do esquema e a execu o do comando VACUUM Nota Obtido pelo comando vacuum sem a op o FULL SHARE MODE Conflita com os modos de bloqueio ROW EXCLUSIVE SHARE UPDATE EXCLUSIVE SHARE ROW EXCLUSIVE EXCLUSIVE e ACCESS EXCLUSIVE Este modo de bloqueio protege a tabela contra a modifica o concorrente dos dados Nota Obtido pelo comando CREATE INDEX SHARE ROW EXCLUSIVE MODE Conflita com os modos de bloqueio ROW EXCLUSIVE SHARE UPDATE EXCLUSIVE SHARE SHARE ROW EXCLUSIVE EXCLUSIVE e ACCESS EXCLUSIVE Nota Este modo n o obtido automaticamente por nenhum comando do PostgreSQL EXCLUSIVE MODE Conflita com os modos de bloqueio ROW SHARE ROW EXCLUSIVE SHARE UPDATE EXCLUSIVE SHARE SHARE ROW EXCLUSIVE EXCLUSIVE e ACCESS EXCLUSIVE Este modo de bloqueio permite somente o ACCESS SHARE concorrente ou seja somente leituras na tabela podem ocorr
130. ECT SELECT INTO INTO n o est dispon vel no PL pgSQL nem no ecpg porque os dois interpretam a cl usula INTO de forma diferente Compatibilidade O SQL92 utiliza o comando SELECT INTO para representar a sele o de valores para dentro de vari veis escalares do programa hospedeiro em vez de criar uma nova tabela Esta a mesma utiliza o encontrada no PL pgSQL e no ecpg A utiliza o no PostgreSQL do comando SELECT INTO para representar a cria o de uma tabela hist rica melhor utilizar o comando CREATE TABLE AS para esta finalidade nos programas novos O comando CREATE TABLE AS tamb m n o padr o mas tem menos chance de causar confus o SET Nome SET muda um par metro de tempo de execu o Sinopse SET SESSION LOCAL vari vel TO valor valor DEFAULT SET SESSION LOCAL TIME ZONE zona hor ria LOCAL DEFAULT 3 Entradas SESSION Especifica que o comando vale para a sess o corrente Este o padr o se nem SESSION ou LOCAL forem declarados LOCAL Especifica que o comando vale apenas para a transa o corrente Ap s o COMMIT Ou ROLLBACK passa a valer novamente a defini o em n vel de sess o Observe que SET LOCAL parece n o ter nenhum efeito se for executado fora de um bloco BEGIN uma vez que a transa o termina imediatamente vari vel Um par metro de
131. ES 42 somente permitida se a transforma o do tipo integer para o tipo text estiver marcada como AS ASSIGNMENT sen o a atribui o n o permitida Geralmente utilizado o termo transforma o de atribui o assignment cast para descrever este tipo de transforma o Se a transforma o estiver maracada como AS IMPLICIT ent o pode ser chamada implicitamente em qualquer contexto seja em uma atribui o ou internamente em uma express o Por exemplo uma vez que recebe argumentos do tipo text ent o a express o SE 4 ECT Data e hora now somente permitida se a transforma o do tipo timestamp para o tipo text estiver marcada como AS IMPLICIT sen o necess rio escrever a transforma o explicitamente como em SE H ECT Data e hora CAST now AS text CREATE CAST Geralmente utilizado o termo transforma o impl cita implicit cast para descrever este tipo de transfor ma o aconselh vel ser conservador com rela o a marcar as transforma es como impl citas Uma abund ncia de possibilidades de transforma es impl citas pode fazer com que o PostgreSQL interprete o comando de forma surpreendente ou que n o seja capaz de executar o comando devido exist ncia de v rias interpreta es pos s veis Um boa regra b sica tornar as transforma es chamadas implicitamente dispon veis apenas para as trans forma es q
132. ET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED SERIALIZABLE Descri o Este comando define o n vel de isolamento da transa o O comando SET TRANSACTION define as caracter sticas para a transa o SQL corrente n o possuindo qualquer efeito sobre nenhuma transa o posterior Este comando n o pode ser utilizado ap s a primeira consulta ou declara o que modifique os dados SELECT INSERT DELETE UPDATE FETCH COPY da transa o tiver sido executada O comando SET SESSION CHARACTERISTICS define o n vel de isolamento padr o para todas as transa es da sess o O comando SET TRANSACTION pode substitui lo para uma transa o individual Hm O n vel de isolamento de uma transa o determina quais dados a transa o pode enxergar quando outras transa es est o processando ao mesmo tempo READ COMMITTED Uma declara o enxerga apenas as linhas efetivadas commit antes do in cio da sua execu o Este o padr o SERIALIZABLE A transa o corrente enxerga apenas as linhas efetivadas commit antes da primeira consulta ou declara o de modifica o de dados ter sido executada nesta transa o Dica Intuitivamente serializ vel significa que duas transa es concorrentes deixam o banco de da dos no mesmo estado que estas duas transa es executadas uma ap
133. GATE nome tipo CASCADE RESTRICT Entradas nome O nome opcionalmente qualificado pelo esquema de uma fun o de agrega o existente tipo O tipo de dado de entrada da fun o de agrega o ou se a fun o aceita qualquer tipo de dado de entrada Consulte o Guia do Usu rio do PostgreSQL para obter mais informa es sobre tipos de dado CASCADE Exclui automaticamente os objetos que dependem da fun o de agrega o RESTRICT N o exclui a fun o de agrega o se existirem objetos dependentes Este o padr o Sa das DROP AGGREGATE Mensagem retornada se o comando for executado com sucesso ERROR RemoveAggregate aggregate nome for type tipo does not exist Esta mensagem ocorre quando a fun o de agrega o especificada n o existe no banco de dados Descri o O comando DROP AGGREGATE remove a defini o da fun o de agrega o Para executar este comando o usu rio corrente deve ser o dono da fun o de agrega o DROP AGGREGATE Notas Utilize o comando CREATE AGGREGATE para criar fun es de agrega o Utiliza o Para remover a fun o de agrega o minha media para o tipo de dado int 4 DROP AGGREGATE minha media int4 Compatibilidade SQL92 N o existe o comando CREATE AGGREGATE no SQL92 O comando CREATE AGGREGATE uma extens o do PostgreSQL linguagem DROP CAST Nome DR
134. L est em conformi dade com o comportamento definido no padr o exceto com rela o limita o do PostgreSQL de que SET CONSTRAINTS n o pode ser usado em restri es de verifica o e de unicidade Ea SET SESSION AUTHORIZATION Nome SET SESSION AUTHORIZATION define o identificador do usu rio da sess o e o identificador do usu rio corrente da sess o corrente Sinopse SET SESSION LOCAL SESSION AUTHORIZATION nome do usu rio SET SESSION LOCAL SESSION AUTHORIZATION DEFAULT RESET SESSION AUTHORIZATION Descri o Este comando define o identificador do usu rio da sess o e o identificador do usu rio corrente do contexto da sess o SQL corrente como sendo nome do usu rio The user name may be written as either an identifier or a string literal The session user identifier is valid for the duration of a connection for example it is possible to temporarily become an unprivileged user and later switch back to become a superuser O identificador do usu rio da sess o inicialmente definido como sendo o possivelmente autenticado nome do usu rio fornecido pelo cliente O identificador do usu rio corrente normalmente igual ao identificador do usu rio da sess o mas pode mudar temporariamente no contexto das fun es setuid e de outros mecanismos semelhantes O identificador do usu rio corrente relevante para a verifica o das permis
135. LAIN SELECT sum i FROM foo WHERE i lt 10 QUERY PLAN Aggregate cost 23 93 23 93 rows 1 width 4 gt Index Scan using fi on foo cost 0 00 23 92 rows 6 width 4 Index Cond i lt 10 3 rows Observe que os n meros espec ficos mostrados e mesmo a estrat gia selecionada para a consulta pode variar entre vers es do PostgreSQL devido a melhorias no planejador Compatibilidade SQL92 N o existe o comando EXPLAIN no SQL92 FETCH Nome FETCH busca linhas de uma tabela usando um cursor Sinopse FETCH dire o contador IN FROM cursor FETCH FORWARD BACKWARD RELATIVE ALL NEXT PRIOR IN FROM cursor Entradas dire o Um seletor definindo a dire o da busca Pode ser um dos seguintes FORWARD busca a s pr xima s linha s Este o padr o quando o seletor for omitido BACKWARD busca a s linha s anterior es RELATIVE Somente por compatibilidade com o SQL92 contador O contador determina quantas linhas ser o buscadas Pode ser um dos seguintes Um n mero inteiro com sinal que especifica quantas linhas ser o buscadas Note que um n mero nega tivo equivalente a mudar o sentido de FORWARD e de BACKWARD ALL Busca todas as linhas remanescentes NEXT Equivalente a especificar um contador igual a 1 PRIOR Equivalente a especificar um contador igual a 1 FETCH cursor O nome de um cursor aberto
136. Manual de Refer ncia do PostgreSQL 7 3 2 The PostgreSQL Global Development Group Manual de Refer ncia do PostgreSQL 7 3 2 por The PostgreSQL Global Development Group Copyright O 1996 2002 The PostgreSQL Global Development Group Legal Notice PostgreSQL is Copyright O 1996 2002 by the PostgreSQL Global Development Group and is distributed under the terms of the license of the University of California below Postgres95 is Copyright O 1994 5 by the Regents of the University of California Permission to use copy modify and distribute this software and its documentation for any purpose without fee and without a written agreement is hereby granted provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT INDIRECT SPECIAL INCIDENTAL OR CONSEQUENTIAL DAMAGES INCLUDING LOST PROFITS ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE SOFTWARE PRO VIDED HEREUNDER IS ON AN AS IS BASIS AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE SUPPORT UPDATES ENHANCEMENTS OR MODIFICATIONS ndice
137. O nome do banco de dados conectado correntemente E definida toda vez que se conecta a um banco de dados inclusive na inicializa o mas a defini o pode ser removida ECHO Se for definida como a11 todas as linhas entradas ou do script s o escritas na sa da padr o antes de serem analisadas ou executadas Para especificar no in cio do programa usa se a chave a Se for definido como queries o psql exibe todos os comandos antes de envi los para o servidor A op o para isto aE ECHO HIDDEN Quando esta vari vel est definida e um comando de contrabarra consulta o banco de dados a consulta mostrada previamente Desta forma pode se estudar o PostgreSQL internamente e fornecer funcionalidades semelhantes nos pr prios programas Se a vari vel for definida como noexec a consulta apenas exibida sem ser enviada para o servidor para executar ENCODING A codifica o multibyte corrente do cliente Se n o estiver configurado para usar caracteres multibyte esta vari vel ir conter sempre SQL ASCIP HISTCONTROL Se esta vari vel estiver definida como ignorespace as linhas que come am por espa o n o s o salvas na lista de hist rico Se estiver definida como ignoredups as linhas id nticas linha anterior do hist rico n o s o salvas O valor ignoreboth combina estas duas op es Se n o estiver definida ou se estiver definida com um valor diferente destes acima todas as lin
138. OP CAST remove uma transforma o definida pelo usu rio Sinopse DROP CAST tipo de origem AS tipo de destino CASCADE RESTRICT Descri o O comando DROP CAST remove uma transforma o previamente definida Para poder remover uma transforma o deve se ser o dono do tipo de dado de origem ou de destino Estes s o os mesmos privil gios necess rios para criar uma transforma o Par metros tipo de origem O nome do tipo de dado de origem da transforma o tipo de destino O nome do tipo de dado de destino da transforma o CASCADE RESTRICT Estas palavras chave n o possuem nenhum efeito uma vez que n o existem depend ncias para as convers es Notas Use o comando CREATE CAST para criar uma transforma o definida pelo usu rio Exemplos Para remover a transforma o do tipo text para o tipo int DROP CAST text AS int4 Compatibilidade O comando DROP CAST est em conformidade com o SQL99 DROP CAST Consulte tamb m CREATE CAST DROP CONVERSION Nome DROP CONVERSION remove uma convers o definida pelo usu rio Sinopse DROP CONVERSION nome da convers o CASCADE RESTRICT Descri o O comando DROP CONVERSION remove uma convers o definida anteriormente Para ser poss vel remover uma convers o necess rio ser o dono da convers o Par metros nome da convers o O nome da convers o O nome da convers o pode
139. R ALTER USER dropuser DROP VIEW Nome DROP VIEW remove uma vis o Sinopse DROP VIEW nome CASCADI ti bo ESTRICT Entradas nome O nome opcionalmente qualificado pelo esquema de uma vis o existente CASCADE Remove automaticamente os objetos que dependem da vis o como outras vis es RESTRICT Recusa remover a vis o se existirem objetos dependentes Este o padr o Sa das DROP VIEW Mensagem retornada se o comando for executado com sucesso ERROR view nome does not exist Esta mensagem ocorre quando a vis o especificada n o existe no banco de dados Descri o O comando DROP VIEW remove do banco de dados uma vis o existente Para executar este comando necess rio ser o dono da vis o Notas Consulte o comando CREATE VIEW para obter informa es sobre como criar vis es Utiliza o Remover a vis o chamada tipos DROP VIEW tipos Compatibilidade SQL92 DROP VIEW END Nome END efetiva a transa o corrente Sinopse END WORK TRANSACTION Entradas WORK TRANSACTION Palavras chave opcionais N o produzem nenhum efeito Sa das COMMIT Mensagem retornada se a transa o for efetivada com sucesso WARNING COMMIT no transaction in progress Se n o houver nenhuma transa o sendo executada Descri o O comando END uma extens o do PostgreSQL um sin nimo para o comando COMMIT c
140. ROLLBACK no transaction in progress Se n o houver nenhuma transa o sendo executada Descri o O comando ROLLBACK desfaz a transa o corrente fazendo com que todas as modifica es realizadas pela transa o sejam rejeitadas Notas Use o comando COMMIT para terminar uma transa o com sucesso O comando ABORT um sin nimo para o comando ROLLBACK Utiliza o Para abortar todas as modifica es ROLLBACK WORK ROLLBACK Compatibilidade SQL92 O SQL92 somente especifica as duas formas ROLLBACK e ROLLBACK WORK Fora isso totalmente compat vel SELECT Nome Sinopse express o FROM item de ORDI FOR UPDATE onde item de pod SELECT ALL DISTINCT ON SELECT retorna linhas de uma tabela ou de uma vis o express o 11 AS nome de sa da WHERE condi o GROUP BY express o HAVING condi o l r Jo 1 UNION INT OFFSET in cio R ER BY express o LIMIT contador S ERSECT EXCEPT ALL select ASC DESC USING operador ALL OF nome da tabela 111 AS ali s select AS ali s AS ali s item de NATURAL S Ei ONLY nome da tabela lista de ali s de coluna 1 1 lista de ali s de coluna nome da fun o de
141. Revisado por Diogo de Oliveira Biazus Ikono 1 http pgsqlbr querencialivre rs gov br 2 mailto halleypo O yahoo com br 3 mailto diogo ikono com br I Comandos SQL Esta parte cont m informa es de refer ncia para os comandos SQL suportados pelo PostgreSQL Por SQL entenda se a linguagem SQL de modo geral informa es sobre a conformidade e a compatibilidade de cada comando com rela o ao padr o podem ser encontradas nas respectivas p ginas de refer ncia ABORT Nome ABORT aborta a transa o corrente Sinopse ABORT WORK TRANSACTION Entradas Nenhuma Sa das ROLLBACK Mensagem retornada se o comando for executado com sucesso WARNING ROLLBACK no transaction in progress Se n o houver nenhuma transa o sendo executada Descri o O comando ABORT desfaz a transa o corrente fazendo com que todas as modifica es realizadas pela transa o sejam rejeitadas Este comando possui um comportamento id ntico ao do comando ROLLBACK do SQL92 estando presente apenas por raz es hist ricas Notas Use o comando COMMIT para terminar uma transa o com sucesso Utiliza o Para abortar todas as modifica es ABORT WORK ABORT Compatibilidade SQL92 Este comando uma extens o do PostgreSQL presente apenas por raz es hist ricas O comando equivalente do SQL92 o ROLLBACK ALTER DATABASE Nome ALTER DATABASE altera um banco de dados Sino
142. SER manuel WITH PASSWORD jw8s0F4 CREATEDB Compatibilidade O comando CREATE USER uma extens o do PostgreSQL O padr o SQL deixa a cria o dos usu rios por conta da implementa o Consulte tamb m ALTER USER DROP USER createuser CREATE VIEW Nome CREATE VIEW cria uma vis o Sinopse CREATE OR REPLACE VIEW vis o nomes de colunas AS SELECT consulta Entradas vis o O nome opcionalmente qualificado pelo esquema da vis o a ser criada nomes de colunas Uma rela o opcional de nomes a serem usados para as colunas da vis o Quando fornecidos estes nomes substituem os nomes inferidos a partir da consulta SQL consulta Uma consulta SQL ou seja um comando SELECT que gera as colunas e as linhas da vis o Consulte o comando SELECT para obter mais informa es sobre os argumentos v lidos Sa das CREATE VIEW Mensagem retornada se a vis o for criada com sucesso td zo ROR Relation vis o already exists Este erro ocorre se a vis o especificada j existir no banco de dados WARNING Attribute nome da coluna has an unknown type A vis o ser criada possuindo uma coluna de tipo desconhecido se n o for especificado Por exemplo o seguinte comando gera esta advert ncia CREATE VIEW vista AS SELECT Al Mundo enquanto o comando abaixo
143. SGBDRs e por simetria com a restri o NOT NULL Sendo que este o padr o para qualquer coluna sua presen a simplesmente informativa Asser es Uma asser o assertion um tipo especial de restri o de integridade e compartilha o mesmo espa o de nomes como outras restri es Entretanto uma asser o n o necessriamente dependente de uma tabela em particular como as retri es s o por isso o SQL92 fornece a declara o CREATE ASSERTION como uma forma alternativa para definir restri es CREATE ASSERTION nome CHECK condi o CREATE TABLE O PostgreSQL n o implementa asser es atualmente Heran a Heran as m ltiplas atrav s da cl usula INHERITS uma extens o da linguagem do PostgreSQL O SQL99 mas n o o SQL92 define heran a nica utilizando uma sintaxe diferente e sem nticas diferente O estilo de heran a do SQL99 ainda n o suportado pelo PostgreSQL Identificadores do Objeto Object IDs O conceito de OIDs identificadores de objeto do PostgreSQL n o padr o Consulte tamb m ALTER TABLE DROP TABLE CREATE TABLE AS Nome CREATE TABLE AS cria uma tabela a partir do resultado de uma consulta Sinopse CREATE LOCAL TEMPORARY TEMP TABLE nome da tabela nome da coluna AS consulta Descri o O comando CREATE TABLE AS cria e carrega uma tabela c
144. Unix local s o aceitas Esta op o corresponde a definir tcpip socket true no arquivo postgresql conf tcpip socket false possui o efeito oposto desta op o k diret rio Especifica o diret rio do soquete do dom nio Unix no qual o postmaster est aguardando as conex es dos aplicativos clientes UNIX SOCKET DIRECTORY diret rio Normalmente o padr o tmp mas pode ser mudado em tempo de compila o Ativa as conex es seguras usando SSL SSL TRUE A op o i tamb m requerida Deve ter sido compilado com SSL habilitado para ser poss vel o uso desta op o N num max conex es Define o n mero m ximo de conex es de clientes aceitas por este postmaster MAX CONNECTIONS num max conex es Por padr o este valor 32 mas pode ser definido t o alto quanto o sistema operacional suportar Observe que a op o B deve ser pelo menos o dobro da op o N Veja a discuss o sobre os recursos do sistema requeridos para a conex o de um grande n mero de clientes no Guia do Administrador 0 op es extras As op es estilo linha de comando especificadas nas op es extras s o passadas para todos os proces sos servidores come ando por este postmaster Consulte o postgres para ver as possibilidades Se a cadeia de caracteres contendo a op o contiver espa os toda a cadeia de caracteres deve vir entre ap strofos pporta Especifica a porta TCP IP ou o soquete do dom nio Unix local onde o post
145. Y FROM Estas linhas n o s o vis veis nem acess veis mas ocupam espa o em disco podendo ocasionar o desperd cio de uma grande quantidade de espa o em disco se o erro ocorrer durante a c pia de uma grande quantidade de dados Deve se executar o comando VACUUM para recuperar o espa o desperdi ado Os arquivos declarados no comando COPY s o lidos ou escritos diretamente pelo servidor e n o pelo aplicativo cliente Portanto devem residir ou serem acess veis pela m quina servidora de banco de dados e n o pela esta o cliente Os arquivos devem ser acess veis e poder ser lidos ou escritos pelo usu rio do PostgreSQL o ID do usu rio sob o qual O servidor processa e n o pelo cliente O copy com nome de arquivo s permitido aos superusu rios do banco de dados porque permite ler e escrever em qualquer arquivo que o servidor possua privil gio de acesso Dica A instru o copy do psql l e escreve arquivos na esta o cliente usando as permiss es do cliente portanto n o restrita aos superusu rios Recomenda se que os nomes dos arquivos usados no comando COPY sejam sempre especificados como um cam inho absoluto sendo exigido pelo servidor no caso do COPY TO mas para COPY FROM existe a op o de ler um arquivo especificado pelo caminho relativo O caminho interpretado como sendo relativo ao diret rio de trabalho do servidor algum lugar abaixo de SPGDATA e n o relativo ao diret rio de trabalho do cliente F
146. Y express o SELECT O GROUP BY condensa em uma nica linha todas as linhas selecionadas que compartilham os mesmos valores para as colunas agrupadas As fun es de agrega o caso existam s o computadas atrav s de todas as linhas que pertencem a cada grupo produzindo um valor separado para cada grupo enquanto que sem GROUP BY uma fun o de agrega o produz um nico valor computado atrav s de todas as linhas selecionadas Quando GROUP BY est presente n o v lido uma express o de sa da do SELECT fazer refer ncia a uma coluna n o agrupada exceto dentro de uma fun o de agrega o porque pode haver mais de um valor poss vel retornado para uma coluna n o agrupada Um item do GROUP BY pode ser o nome de uma coluna da entrada o nome ou o n mero ordinal de uma coluna da sa da express o SELECT ou pode ser uma express o arbitr ria formada pelos valores das colunas da entrada No caso de haver ambigiiidade o nome no GROUP BY vai ser interpretado como o sendo o nome de uma coluna da entrada e n o como o nome de uma coluna da sa da A cl usula HAVING A condi o opcional HAVING possui a forma geral HAVING express o booleana onde expres o booleana a mesma que foi especificada para a cl usula WHERE HAVING especifica uma tabela agrupada derivada pela elimina o das linhas agrupadas que n o satisfazem a express o booleana HAVING diferente de WHERE WHERE filtra individualmente as linhas
147. a o d gitos Nod gitos e Voxd gitos o caractere com o c digo decimal octal ou hexadecimal informado Se o argumento n o entre ap strofos come ar por dois pontos este ser considerado como sendo uma vari vel e o valor desta vari vel ser usado como o argumento Os argumentos entre crases s o considerados como sendo uma linha de comando a ser passada para a shell A sa da do comando com o caractere de nova linha final removido usada como o valor do argumento As segii ncias de escape 1 acima tamb m se aplicam s crases 52 psgl Alguns comandos recebem como argumento o nome de um identificador SQL como o nome de uma tabela Estes argumentos seguem as regras de sintaxe do SQL com rela o s aspas um identificador que n o esteja entre aspas convertido para letras min sculas enquanto os espa os em branco dentro das aspas s o inclu dos nos argumentos A leitura dos argumentos termina quando outra contrabarra n o entre ap strofos encontrada Esta consider ada como sendo o in cio de um novo meta comando A segii ncia especial duas contrabarras marca o fim dos argumentos e prossegue analisando os comandos SQL se existirem Desta forma os comandos SQL e psql podem ser livremente misturados em uma linha Mas em nenhum caso os argumentos do meta comando podem prosseguir depois do fim da linha Os seguintes meta comandos est o definidos Ya Se o formato atual de
148. a rea secund ria de armazenamento de bancos de dados do PostgreSQL Sinopse initlocation diret rio Description O initlocation cria uma nova rea secund ria de armazenamento de bancos de dados do PostgreSQL Veja em CREATE DATABASE a discuss o sobre como usar e gerenciar reas de armazenamento secund rias Se o ar gumento n o contiver uma barra e n o for um caminho v lido ser assumido como sendo uma vari vel de ambiente a qual referenciada Veja os exemplos no final Para poder usar este comando necess rio estar autenticado no sistema operacional como o superusu rio do banco de dados usando o comando su por exemplo Exemplos Para criar um banco de dados em um local alternativo usando uma vari vel de ambiente export PGDATA2 opt postgres data Deve se parar e reiniciar o postmaster para que este enxergue a vari vel de ambiente PGDATA2 O sistema deve ser configurado de maneira que o postmaster enxergue PGDATA toda vez que iniciar Finalmente initlocation PGDATA2Z createdb D PGDATA2 testdb Quando os caminhos absolutos s o permitidos poss vel escrever initlocation opt postgres data createdb D opt postgres data testdb testdb Consulte tamb m Guia do Administrador do PostgreSQL 79 ipcclean Nome ipcclean remove a mem ria compartilhada e os sem foros de um servidor PostgreSQL abortado Sinopse ipcclean Descri o O ipcclean remove todos os segmentos
149. a a cl usula ONLY E necess rio possuir acesso de escrita a uma tabela para poder modific la assim como acesso de leitura em todas as tabelas cujos valores s o lidos na condi o da cl usula WHERE Utiliza o Remover todos os filmes exceto os musicais DELETE FROM filmes WHERE tipo lt gt Musical SELECT FROM filmes cod titulo did data prod tipo duracao gt gt gt gt gt gt 0 gt 0 gt 00 gt 0 gt 00 gt 00 000000000 gt 4 gt gt 0 gt gt 4 gt gt 0 gt 0 gt gt gt gt gt 4 gt gt gt gt gt gt gt 4 gt UA501 West Side Story 105 1961 01 03 Musical 02 32 TC901 The King and I 109 1956 08 11 Musical 02 13 WD101 Bed Knobs and Broomsticks 111 Musical 01 57 3 rows Esvaziar a tabela filmes DELETE FROM filmes SELECT FROM filmes cod titulo did data prod tipo duracao 0 rows Compatibilidade SQL92 O SQL92 permite uma declara o DELETE posicionada DELETE ROM tabela WHERE CURRENT OF cursor Hj onde cursor identifica um cursor aberto Cursores interativos no PostgreSQL s o apenas para leitura DROP AGGREGATE Nome DROP AGGREGATE remove uma fun o de agrega o definida pelo usu rio Sinopse DROP AGGRE
150. a a ser criada nome da coluna O nome da coluna a ser criada na nova tabela tipo de dado O tipo de dado da coluna Pode incluir especificador de matriz array Consulte o Guia do Usu rio para obter mais informa es sobre tipos de dado e sobre matrizes e EFAULT express o padr o A cl usula DEFAULT atribui um valor padr o para o dado da coluna em cuja defini o est presente O valor pode ser qualquer express o subconsultas e refer ncias cruzadas para outras colunas da mesma tabela n o s o permitidas O tipo de dado da express o padr o deve corresponder ao tipo de dado da coluna A express o utilizada em todas as opera es de inclus o que n o especificam valor para a coluna N o havendo valor padr o para a coluna ent o NULL torna se o valor padr o INHERITS tabela ascendent E RA A cl usula opcional INHERITS herda especifica uma lista de tabelas das quais a nova tabela herda auto maticamente todas as colunas Se o mesmo nome de coluna existir em mais de uma tabela ascendente um erro gerado a menos que o tipo de dado das colunas seja o mesmo em todas as tabelas ascendentes Se n o houver conflito ent o as colunas duplicadas s o mescladas para formar uma nica coluna da nova tabela Se a lista de nomes de colunas da nova tabela cont m uma coluna que tamb m herdada da mesma forma o tipo de dado deve ser o mesmo das colunas herdadas e a defini o das colunas
151. a de caracteres ou DEFAULT para utilizar o local padr o gabarito Nome do banco de dados a ser usado como gabarito para a cria o do novo banco de dados ou DEFAULT para utilizar o banco de dados de gabarito padr o template1 codifica o M todo de codifica o multibyte a ser utilizado no novo banco de dados Especifique o nome como uma cadeia de caracteres por exemplo SOL ASCII ou o n mero inteiro da codifica o ou DEFAULT para utilizar a codifica o padr o Sa das CREATE DATABASE Mensagem retornada se o comando for executado com sucesso ERROR user nome do usu rio is not allowed to create drop databases necess rio possuir o privil gio especial CREATEDB para criar bancos de dados Consulte o comando CRE ATE USER CREATE DATABASE ERROR createdb database nome already exists Esta mensagem ocorre se o banco de dados com o nome especificado j existir ERROR database path may not contain single quotes O local do banco de dados especificado em caminho n o pode conter ap strofos Isto necess rio para que o interpretador de comandos que vai criar o diret rio do banco de dados possa executar com seguran a ERROR CREATE DATABASE may not be called in a transaction block Havendo um bloco de transa o expl cito sendo executado n o poss vel utilizar o comando CREATE DATABASE Primeiro a transa
152. a dra a a Ea Anas 1 SET SESSION AUTHORIZATION neie aneneen eteo ee EE LEE a E E EEEE EEE Aa as 1 SET TRANSACTION aea a e REET EEEO ERE E ADA Da pa EE T TR 1 O OM a A PRE RNA SEGREDO a DR A DA RPE IO 1 SPART TRA NSA O ON a a a hdi ses Da a SUAS e a aE Oa Ra TERASE adiada 1 TRUNCATE i s eee a a E E EE E A N EE E E E EE E E AR 1 UNLISTEN EEE E E E T EE EE 1 UPDATE AE E EE EEEE EEE EEE E EEEE EE do EEEO E EEEE OE OANEI 1 VACUUM A ea E Seres Var ES AAT EE EN A EE EE VOE EREE SEEE SE ER TERES 1 II Aplicativos para a esta o cliente do PostgreSQL eesessesessesessosossososoessesosessosoesoesesessosessesoesesossessesossesoesesse 4 el sterdb iara R EE E ET A Eria e ATENTE R R E E E R 5 Created us mene iri EAR EEE E ENEIT neo ata ie Sine N N moiL on SAO Lita roda vi icon ebb nto 8 CREALCIAN E siendo is perenes SOIS ESET AS O RS DE E AE 11 Createt Serao raont RE E EEEE A R a EEA CNAS EREEREER 14 dropab EREE EESE E EA SS E E E E E a DARE o a ata A E 18 drOplan Sei ai E E A EREE E AR E A E T E E A 21 CANKO DAE K ca E REEE EES EE EEEE EE AE EAEE E AE E RD 24 ECP Eere e a a E RR RS ER DR GR DD RN RR OR RD 27 pesconhot Salar tica EOE E ES sia E E uea E caca A CR E E da aqu 29 PE SQUID Essas ioga ria pessoa pedi Secad di jegue LA In A conadii ole deC A ti us args ars no deb Si jagua AEAEE 31 pesdumpall ss ana SNS Os USADO ISS DESCENDO STR BOSS O a ipa do Sa lada 38 9 2088 S401 10 ESPADAS RD RPPN UR RD PRISON CPE NRO E DCI END RGE DR RR RR 41 joare
153. a em especial sobre remover bancos de dados desta ou daquela maneira significando que o psql deve ser encontrado pelo script e que o servidor de banco de dados deve estar executando na m quina de destino Tamb m se aplicam os padr es definidos e as vari veis de ambiente dispon veis para o psqle para a biblioteca cliente libpq Op es O dropdb aceita os seguintes argumentos de linha de comando nome bd Especifica o nome do banco de dados a ser removido O banco de dados deve ser um dos bancos de dados existentes nesta instala o do PostgreSQL e echo Exibe os comandos que o dropdb gera e envia para o servidor interactive Solicita a confirma o antes de fazer qualquer opera o destrutiva q quiet N o exibe resposta O createdb tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o 18 dropdb h hospedeiro host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p porta port porta Especifica a porta Internet TCP IP ou o soquete do dom nio Unix local onde o servidor est aguardando as conex es U username usernam usernam Nome do usu rio para se conectar W password For a a solicita o da senha Diagn sticos DROP DATABAS E O banco de dados foi removido com sucesso dropdb Data
154. a entre par nteses note que uma cl usula ali s exigida para a subconsulta Esta caracter stica extremamente til porque esta a nica maneira de se obter m ltiplos n veis de agrupamento agrega o ou ordena o em uma nica consulta Um item do FROM pode ser uma fun o de tabela tipicamente uma fun o que retorna v rias linhas e ou colu nas embora na verdade qualquer fun o possa ser utilizada A fun o chamada com os valores dos argumentos fornecidos e a sua sa da varrida como se fosse uma tabela Em alguns casos til definir fun es de tabela que possam retornar conjuntos diferentes de colunas dependendo de como s o chamadas Para que isto seja poss vel a fun o de tabela deve ser declarada como retornando o pseudo tipo record Quando esta fun o usada no FROM deve ser seguida por um ali s ou pela palavra chave AS s zinha e depois por uma lista de nomes de coluna e tipos de dado entre par nteses Isto fornece uma defini o de tipo composto em tempo de consulta A defini o de tipo composto deve corresponder ao tipo composto retornado pela fun o ou um erro ser gerado em tempo de execu o Finalmente um item da cl usula FROM pode ser uma cl usula JOIN que combina dois itens do FROM Use par nteses se for necess rio para determinar a ordem de aninhamento O CROSS JOIN e o INNER JOIN s o um produto cartesiano simples o mesmo que seria obtido listando se os dois itens
155. a os dados em um arquivo acess vel ao cliente psql Portanto a acessibili dade e os direitos de acesso dependem do cliente e n o do servidor quando o copy utilizado Notas O comando COPY s pode ser utilizado em tabelas n o pode ser utilizado em vis es COPY A palavra chave BINARY for a todos os dados serem escritos lidos no formato bin rio em vez de texto E um pouco mais r pido do que a c pia normal mas o arquivo bin rio produzido n o port vel entre m quinas com arquiteturas diferentes Por padr o a c pia no formato texto usa o caractere de tabula o t como delimitador de campos O delim itador de campo pode ser mudado para qualquer outro caractere nico usando a palavra chave DELIMITER Os caracteres nos campos de dados que forem id nticos ao caractere delimitador ser o precedidos por uma contra barra E necess rio possuir permiss o de leitura em todas as tabelas cujos valores s o lidos pelo COPY TO e permis s o para inserir em uma tabela onde valores s o inseridos pelo copy FROM O servidor tamb m necessita de permiss es apropriadas no Unix para todos os arquivos lidos ou escritos pelo COPY O comando COPY FROM invoca os gatilhos e as restri es de verifica o da tabela de destino Entretanto n o invoca as regras O copy p ra de executar no primeiro erro o que n o deve acarretar problemas para o COPY TO mas a tabela de destino j vai ter recebido linhas no caso do cop
156. a regra ON minha tabela IS Registra as atualizal es dos registros dos e COMMENT ON SCHEMA meu esquema IS Dados departamentais COMMENT ON SEQUENCE minha sequencia IS Usado para gerar as chaves prim rias COMMENT O ABLE meu esquema minha tabela IS Informa es dos empregados COMMENT O RIGGER meu gatilho ON minha tabela IS Usado para a integridade referencial COMMENT O YPE complex IS Tipo de dado de n mero complexo COMMENT ON VIEW minha vis o IS Vis o dos custos departamentais COMMENT Compatibilidade SQL92 N o existe o comando COMMENT no SQL92 COMMIT Nome COMMIT efetiva a transa o corrente Sinopse COMMIT WORK TRANSACTION Entradas WORK TRANSACTION Palavras chave opcionais N o produzem nenhum efeito Sa das COMMIT Mensagem retornada se a transa o for efetivada com sucesso WARNING COMMIT no transaction in progress Se n o houver nenhuma transa o sendo executada Descri o O comando COMMIT efetiva a transa o sendo executada Todas as modifica es efetuadas pela transa o se tornam vis veis para os outros e existe a garantia de permanecerem se uma falha ocorrer Notas As palavras chave WORK e TRANSACTION s o informativas podendo ser omitidas Use o ROLLBACK para desfazer a transa o COMMIT Utiliza o Para tornar todas as modifica es permanentes COMMIT WORK Compatibilidade SQL92 O SQL92
157. a representar as datas num ricas O valor para SET DATESTYLE pode ser um da primeira rela o estilos de sa da ou um da segunda rela o subestilos ou um de cada separados por v rgula SET DATESTYLE tem efeito sobre a interpreta o da entrada e fornece v rios formatos padr o para a sa da Para os aplicativos que necessitam de formatos diferentes ou de um controle mais r gido sobre a entrada ou a sa da deve ser levado em conta a utiliza o da fam lia de fun es to char Existem v rias formas obsoletas de se definir o estilo da data al m dos m todos normais de defini o usando o comando SET ou a entrada no arquivo de configura o Setting the postmaster s PGDATESTYLE environment variable This will be overridden by any of the other methods SET Running postmaster using the option o e to set dates to the European convention This overrides environment variables and configuration file entries Setting the client s PGDATESTYLE environment variable If PGDATESTYLE is set in the frontend environ ment of a client based on libpg libpq will automatically set DATESTYLE to the value of PGDATESTYLE during connection start up This is equivalent to a manually issued SET DATESTYLE NAMES SET NAMES is an alias for SET CLIENT ENCODING SEED Define a semente interna para o gerador de n
158. a sem correspond ncia estendida com nulos na tabela esquerda Para todos os tipos de JOIN exceto CROSS JOIN deve se escrever exatamente um entre ON condi o de jun o USING lista de coluna de jun o ou NATURAL A cl usula ON o caso mais geral pode ser escrita qualquer express o de qualifica o envolvendo as duas tabelas da jun o A forma USING lista de colunas a b uma abrevia o para a condi o ON tabela esquerda a tabela direita a AND tabela esquerda b tabela direita b Al m disso USING implica em que somente uma coluna de cada par de colunas equivalentes ser inclu da na sa da do JOIN e n o as duas NATURAL uma abrevia o para USING quando a lista menciona todas as colunas das tabelas com mesmo nome A cl usula WHERE A condi o opcional WHERE possui a forma geral WHERE express o booleana A express o booleana pode ser qualquer express o que retorna um valor booleano Em muitos casos esta express o possui a forma express o cond op expr ou op logico expr onde op condi o pode ser um entre lt lt gt gt ou lt gt um operador condicional como ALL ANY IN LIKE ou um operador definido localmente e oo logico pode ser um entre AND OR e NOT O SELECT ignora todas as linhas para as quais a condi o WHERE n o retorna TRUE A cl usula GROUP BY O GROUP BY especifica uma tabela agrupada derivada da aplica o desta cl usula GROUP B
159. a tabela consultada Se ONLY n o for especificado a tabela e todas as suas tabelas descendentes porventura existentes ser o consultadas O pode ser anexado ao nome da tabela para indicar que as tabelas descendentes devem ser consultadas mas na vers o corrente este o comportamento padr o Nas vers es anteriores a 7 1 ONLY era o comportamento padr o O comportamento padr o pode ser mudado alterando se a op o de configura o SOL INHERITANCE ali s Um nome substituto para o item do FROM que cont m o ali s Um ali s utilizado para abreviar ou para eliminar ambigiiidade em autojun es onde a mesma tabela referenciada v rias vezes Quando um ali s fornecido este oculta completamente o nome verdadeiro da tabela ou da fun o de tabela por exemplo escrevendo se FROM foo AS fo restante do comando SELECT deve fazer refer ncia este item do FROM como f e n o foo Se um ali s for fornecido uma rela o de ali s de coluna tamb m pode ser escrito para fornecer nomes substitutos para uma ou mais colunas da tabela select Uma subconsulta pode aparecer na cl usula FROM agindo tal qual sua sa da tivesse sido criada como uma tabela tempor ria pela dura o do comando SELECT Observe que a subconsulta deve estar entre par nteses e que um ali s deve ser fornecido para esta subconsulta fun o de tabela Uma fun o de tabela pode aparecer na cl usula FROM agindo tal qual sua sa da tivesse s
160. a tabela de conte do ndice do arquivo de exporta o pg restore 1l arqexp file gt arqgexp list O arquivo de listagem consiste do cabe alho e de uma linha para cada item como no exemplo abaixo Archive created at Fri Jul 28 22 28 36 2000 dbname birds f TOC Entries 74 E Compression 0 Dump Version 1 4 0 Format CUSTOM Selected TOC Entries 145344 TABLE species postgres 145344 ACL species 145359 TABLE nt_header postgres 145359 ACL nt_header 145402 TABLE species_records postgres me SO UM WD 46 pg_restore 7 145402 ACL species_records 8 145416 TABLE ss_old postgres 9 145416 ACL ss_old 10 145433 TABLE map_resolutions postgres 11 145433 ACL map_resolutions 12 145443 TABLE hs_old postgres 13 145443 ACL hs_old Ponto e v rgula s o delimitadores de coment rios e os n meros no in cio das linhas referem se aos identificadores interno do arquivo de exporta o atribu dos a cada item As linhas do arquivo podem ser transformadas em coment rio exclu das e reordenadas Por exemplo 10 145433 TABLE map_resolutions postgres 2 145344 TABLE species postgres 4 145359 TABLE nt header postgres 6 145402 TABLE species_records postgres 8 145416 TABLE ss_old postgres poderia ser usado como entrada para o pg_restore e somente restauraria os itens 10 e 6 nesta ordem pg_restore
161. ado e ent o selecionando se a classe apropriada para a constru o do ndice Tamb m existem algumas classes de operadores com finalidades especiais e As duas classes de operadores box ops e bigbox ops suportam ndices R tree para o tipo de dado box A diferen a entre as duas que bigbox ops ajusta as coordenadas da caixa para baixo evitando exce es de ponto flutuante ao executar multiplica o adi o e subtra o de coordenadas com n meros de ponto flutuante muito grande Nota isto era verdade h algum tempo atr s mas atualmente as duas classes de operadores utilizam ponto flutuante e s o efetivamente id nticas A seguinte consulta exibe todas as classes de operadores SELECT am amname AS metodo de acesso opc opcname AS nome do operador FROM pg am am pg opclass opc WHERE opc opcamid am oid ORDER BY acc method ops name Utiliza o Para criar um ndice B tree para a coluna titulo na tabela filmes CREATE UNIQUE INDEX unq titulo ON filmes titulo Compatibilidade SQL92 O comando CREATE INDEX uma extens o do PostgreSQL linguagem N o existe o comando CREATE INDEX no SQL92 CREATE INDEX CREATE LANGUAGE Nome CREATE LANGUAGE cria uma linguagem procedural Sinopse CREATE TRUSTED PROCEDURAL LANGUAGE nome da linguagem HANDLER tratador de chamadas VALIDATOR fun o de valida o
162. ais podem ser tratadas pelas bibliotecas do sistema X Window em vez da she11 Se nenhum nome de arquivo for fornecido a she11 ser interativa Uma she11 Tcl com fun es PostgreSQL est dispon vel em pgtclsh Consulte tamb m pgtclsh Guia do Programador do PostgreSQL descri o da libpgt cl telsh wish 71 vacuumdb Nome vacuumdb limpa e analisa um banco de dados do PostgreSQL Sinopse vacuumdb op es de conex o full f verbose v analyze z table t tabela I coluna nome ba vacuumdb op es de conex o all a full f verbose v analyze z Descri o O vacuumdb um utilit rio para fazer a limpeza de bancos de dados do PostgreSQL O vacuumdb tamb m gera estat sticas internas usadas pelo otimizador de consultas do PostgreSQL O vacuumdb um script envolt rio que usa o comando do servidor VACUUM atrav s do terminal interativo do PostgreSQL psql N o existe diferen a efetiva entre limpar o banco de dados desta ou daquela maneira O psql deve ser encontrado pelo script e o servidor de banco de dados deve estar executando na m quina de destino Tamb m se aplicam os padr es definidos e as vari veis de ambiente dispon veis para o psql e para a biblioteca cliente libpq Pode ser necess rio o vacuumdb se conectar v rias vezes ao servidor PostgreSQL solicitando a senha em cada uma das vezes E conveniente existir o aquivo SHOME pgpa
163. ando LOCK TABLE no SQL92 que em seu lugar usa o comando SET TRANSACTION para es pecificar os n veis de concorr ncia das transa es O PostgreSQL tamb m suporta esta funcionalidade Consulte o comando SET TRANSACTION para obter mais detalhes Exceto pelos modos de bloqueio ACCESS SHARE ACCESS EXCLUSIVE e SHARE UPDATE EXCLUSIVE os modos de bloqueio do PostgreSQL e a sintaxe do comando LOCK TABLE s o compat veis com as presentes no Oracle TM MOVE Nome MOVE posiciona o cursor em uma determinada linha da tabela Sinopse MOVE dire o contador IN FROM cursor Descri o O comando MovE permite ao usu rio mover a posi o do cursor o n mero especificado de linhas O comando MOVE trabalha como o comando FETCH por m somente posiciona o cursor sem retornar as linhas Consulte o comando FETCH para obter detalhes sobre a sintaxe e a utiliza o Notas O comando MovE uma extens o da linguagem do PostgreSQL Consulte o comando FETCH para obter uma descri o dos argumentos v lidos Consulte o comando DECLARE para definir o cursor Consulte os comandos BEGIN COMMIT e ROLLBACK para obter mais informa es sobre as transa es Utiliza o Criar e usar um cursor BEGIN WORK DECLARE liahona CURSOR FOR SELECT FROM filmes Saltar as primeiras 5 linhas MOVE FORWARD 5 IN liahona MOVE Ler a sexta linha no cursor liahona FETCH 1 IN liahona
164. antes da aplica o do GROUP BY enquanto HAVING filtra os grupos de linhas criados pelo GROUP BY Cada coluna referenciada na express o booleana deve referenciar sem ambigiiidade uma coluna de agru pamento a menos que a refer ncia apare a dentro de uma fun o de agrega o A cl usula ORDER BY ORDER BY express o ASC DESC USING operator Um item do ORDER BY pode ser o nome ou o n mero ordinal de uma coluna da sa da express o SELECT ou pode ser uma express o arbitr ria formada por valores da coluna de entrada No caso de haver ambigiiidade o nome no ORDER BY ser interpretado como o nome de uma coluna da sa da O n mero ordinal refere se posi o ordinal da esquerda para a direita da coluna do resultado Esta caracter stica torna poss vel definir uma ordena o baseada em uma coluna que n o possui um nome nico Nunca isto absolutamente necess rio porque sempre poss vel atribuir um nome a uma coluna do resultado usando a cl usula AS como no exemplo abaixo SE ta ECT titulo data prod 1 AS newlen FROM filmes ORDER BY newlen Tamb m poss vel efetuar um ORDER BY por express es arbitr rias uma extens o ao SQL92 incluindo cam pos que n o aparecem na lista de resultados do SELECT Portanto o seguinte comando v lido SE 4 ECT nome FROM distribuidores ORDER BY cod SELECT Uma limita o desta funcionalidade que uma
165. ar uma nova sess o o valor especificado se tornar o padr o para a sess o substituindo qualquer defini o que esteja presente no arquivo postgresql conf ou que tenha sido recebida do postmaster Usu rios comuns podem mudar os valores padr o para a sua pr pria sess o Superusu rios podem mudar os valores padr o para a sess o de qualquer usu rio Par metros nome do usu rio O nome do usu rio cujos atributos est o sendo alterados senha A nova senha a ser utilizada para esta conta ENCRYPTED UNENCRYPTED Estas palavras chave controlam se a senha armazenada criptografada ou n o em pg shadow Consulte o comando CREATE USER para obter mais informa es sobre esta op o ALTER USER CREATEDB NOCREATEDB Estas cl usulas definem a permiss o para o usu rio criar bancos de dados Se CREATEDB for especifi cado o usu rio sendo alterado ter permiss o para criar seus pr prios bancos de dados Especificando se NOCREATEDEB a permiss o para criar bancos de dados negada ao usu rio CREATEUSER NOCREATEUSER Estas cl usulas definem a permiss o para o usu rio criar novos usu rios Esta op o tamb m torna o usu rio um superusu rio que pode mudar todas as restri es de acesso data hora A data e opcionalmente a hora de expira o da senha do usu rio vari vel valor Define para a sess o do usu rio o valor padr o da vari
166. ara cada tabela se lecionada Esta uma forma de combina o adequada para os scripts das rotinas de manuten o Consulte o comando ANALYZE para obter mais detalhes sobre o seu processamento O comando VACUUM sem o FULL simplesmente recupera o espa o tornando o dispon vel para ser reutilizado Esta forma do comando pode operar em paralelo com a leitura e escrita normal uma vez que n o requer o bloqueio exclusivo da tabela O VACUUM FULL executa um processamento mais extenso incluindo a movimenta o das tuplas atrav s de blocos para tentar compactar a tabela para o menor n mero de blocos de disco Esta forma muito mais lenta e requer o bloqueio exclusivo de cada tabela para process la O FREEZE uma op o com finalidade especial que faz as tuplas serem marcadas como congeladas logo que seja poss vel em vez de aguardar at que sejam bastante velhas Se for realizado quando n o existir nenhuma outra transa o sendo executada no mesmo banco de dados ent o garantido que todas as tuplas do banco de dados sejam congeladas e n o estar o sujeitas aos problemas do recome o do ID de transa o n o importa quanto tempo o banco de dados for deixado sem executar o VACUUM O FREEZE n o recomendado para uso rotineiro Sua nica utiliza o esperada em conjunto com a prepara o dos bancos de dados de gabarito dos usu rios ou outros bancos de dados que s o unicamente para leitura e n o receber o
167. as condi es que ser o utilizadas em um determinado banco de dados e o significado de cada uma delas Usualmente o nome da condi o de notifica o o mesmo nome de uma tabela do banco de dados e o evento de notifica o essencialmente diz Eu modifiquei a tabela d uma olhada nela e veja o que h de novo Por m este tipo de associa o n o exigida pelos comandos NOTIFY e LIST EN Por exemplo o projetista do banco de dados pode usar v rios nomes diferentes de condi o para sinalizar diferentes tipos de mudan a em uma nica tabela O comando NOTIFY fornece uma forma de sinal simples ou mecanismo de IPC comunica o entre processos para um conjunto de processos acessando o mesmo banco de dados do PostgreSQL Podem ser constru dos NOTIFY mecanismos de n vel mais alto usando se tabelas no banco de dados para passar informa es adicionais al m do mero nome da condi o do notificador para o s ouvinte s Quando o NOTIFY utilizado para sinalizar a ocorr ncia de mudan as em uma tabela em particular uma t cnica de programa o til colocar o NOTIFY em uma regra que disparada pela atualiza o da tabela Deste modo a notifica o acontece automaticamente quando a tabela modificada e o programador do aplicativo n o vai poder acidentalmente esquecer de faz la O NOTIFY interage com as transa es SQL de forma importante Em primeiro lugar se um NOTIFY for executado de
168. as opera es da rotina de manuten o VACUUM Consulte o Guia do Administrador para obter detalhes Notas Recomenda se que os bancos de dados de produ o ativos sejam VACUUM nizados frequentemente pelo menos toda noite para que sejam removidas as linhas expiradas Ap s incluir ou excluir um grande n mero de linhas pode ser uma boa id ia executar o comando VACUUM ANALYZE para a tabela afetada Esta opera o vai atualizar os cat logos do sistema com os resultados de todas as mudan as recentes permitindo ao otimizador de consultas do PostgreSQL fazer melhores escolhas ao planejar as consultas dos usu rios A op o FULL n o recomendada para uso rotineiro mas pode ser til em casos especiais Um exemplo ap s ter sido removida a maioria das linhas da tabela e deseja se que a tabela seja fisicamente encolhida para ocupar menos espa o em disco O comando VACUUM FULL geralmente encolhe mais a tabela do que o comando VACUUM simples VACUUM Abaixo est mostrado um exemplo da execu o do comando vacuum em uma tabela do banco de dados ANALYZE onek Pages 14 Tuples 1000 CPU 0 00s 0 11lu sec elapsed 0 12 sec Pages 16 Tuples 1000 CPU 0 00s 0 10u sec elapsed 0 10 sec Pages 13 Tuples 1000 CPU 0 00s 0 10u sec elapsed 0 10 sec Pages 31 Tuples 1000 CPU 0 01s 0 09u sec elapsed 0 10 sec in 70 pages CPU 0 02s 0 04u sec elapsed 0 0
169. as tamb m s o utilizadas para implementar as vis es das tabelas A sem ntica de uma regra que no instante em que uma inst ncia individual linha acessada inclu da atu alizada ou exclu da existe uma inst ncia antiga para consultas atualiza es e exclus es e uma inst ncia nova para inclus es e atualiza es Toda as regras para o tipo de evento indicado na tabela de destino indicada s o ex aminadas sucessivamente na ordem dos nomes Sea condi o especificada na cl usula WHERE caso exista for verdadeira a parte a o da regra executada A a o executada em vez da consulta original se INSTEAD for especificado sen o executada ap s a consulta original no caso de ON INSERT ou antes da consulta original nos casos de ON UPDATE e ON DELETE Dentro da condi o e da a o os valores dos campos da inst ncia antiga e ou da inst ncia nova s o substitu dos por old nome do atributoenew nome do atributo A parte a o da regra pode ser composta por uma ou mais consultas Para escrever v rias consultas deve se coloc las entre par nteses Estas consultas ser o realizadas na ordem especificada A a o tamb m pode ser NOTHING indicando nenhuma a o Portanto a regra DO INSTEAD NOTHING suprime a execu o da consulta original quando sua condi o for verdadeira uma regra DO NOTHING n o tem utilidade A parte a o da regra executa com o mesmo identificador do comando e da transa o do comando
170. ativo o processa mento ser imediatamente interrompido com um erro Esta distin o foi escolhida por ser mais conveniente para o usu rio que digita menos e para garantir um mecanismo seguro que impe a os scripts atuarem aci dentalmente no banco de dados errado copy tabela lista de colunas from to nome do arquivo stdin stdout with oids delimiter as caractere null as cadeia de caracteres Executa uma c pia pelo cliente Esta uma opera o que executa o comando SQL COPY mas em vez do servidor ler ou escrever no arquivo especificado o psgl l ou escreve no arquivo e roteia os dados entre o servidor e o sistema de arquivos local Isto significa que o usu rio local e n o o servidor necessita ter acesso f sico ao arquivo e os privil gios necess rios e que n o h necessidade de privil gio de superusu rio 53 psql A sintaxe deste comando semelhante sintaxe do comando SQL copy Consulte sua descri o para obter detalhes Observe que por causa disto regras especiais de an lise se aplicam ao comando copy Em particular as regras de substitui o de vari vel e de escapes de contrabarra N n o se aplicam Dica Este modo de opera o n o t o eficiente quanto o comando SQL copy porque todos os dados passam atrav s da conex o IP cliente servidor ou pelo soquete Para uma grande quantidade de dados o outro modo pode ser prefer vel Nota Observe a diferen
171. atualizadas Para reorganizar o espa o de uma vez deve se fazer uma atualiza o fict cia de todas as linhas e depois executar o comando VACUUM como em ALTER TABLE UPDATE tabela SET coluna coluna VACUUM FULL tabela Se a tabela possuir tabelas descendentes n o permitido adicionar ou mudar o nome da coluna na tabela ancestral sem fazer o mesmo nas tabelas descendentes ou seja ALTER TABLE ONLY rejeitado Isto garante que as tabelas descendentes sempre possuem colunas que correspondem as da tabela ancestral Uma opera o DROP COLUMN recursiva remove a coluna da tabela descendente somente se a tabela descen dente n o herda esta coluna de outros ancestrais e nunca pussuiu uma defini o independente para a coluna Uma opera o DROP COLUMN n o recursiva ou seja ALTER TABLE ONLY DROP COLUMN nunca remove qualquer coluna descendente mas em vez disto marca estas colunas como definidas independentemente em vez de herdada Mudar qualquer parte do esquema do cat logo do sistema n o permitido Consulte o comando CREATE TABLE para obter uma descri o detalhada dos argumentos v lidos O Guia do Usu rio do PostgreSQL cont m mais informa es sobre heran a Utiliza o Para adicionar uma coluna do tipo varchar em uma tabela ALTER TABLE distribuidores ADD COLUMN endereco VARCHAR 30 Para excluir uma coluna de uma tabela ALTER TABLE distribuidores DROP COLUMN ender
172. aumento proporcional no tempo e espa o necess rio para executar o comando ANALYZE Compatibilidade SQL92 N o existe o comando ANALYZE no SQL92 BEGIN Nome BEGIN inicia um bloco de transa o Sinopse BEGIN WORK TRANSACTION Entradas WORK TRANSACTION Palavras chave opcionais N o produzem nenhum efeito Sa das EGIN Significa que uma nova transa o come ou WARNING Bl EGIN already a transaction in progr ess Indica que uma transa o est sendo executada A transa o corrente n o afetada Descri o Por padr o o PostgreSQL executa as transa es em modo n o encadeado tamb m conhecido por autocommit auto efetiva o em outros sistemas de banco de dados Em outras palavras cada comando executado em sua pr pria transa o e uma efetiva o implicitamente reali com sucesso sen o um rollback realizado O comando B seja todas as declara es ap s o comando B encontrado um comando expl cito COMMIT ou ROLLBACK encadeado porque cada in cio efetiva o de transa o requer execu o de v rios comandos em uma nica transa o tamb zada ao final do comando se a execu o terminar EGIN inicia uma transa o no modo encadeado ou EGIN s o executadas como sendo uma nica transa o at que seja Os comandos s o executados mais r pido no modo uma atividade significativa de CPU e de disco A
173. ave n o provoca qualquer efeito SCROLL Palavra chave do SQL92 indicando que v rias linhas de dados devem ser trazidas em cada opera o de busca FETCH Como sempre permitido pelo PostgreSQL esta palavra chave n o provoca qualquer efeito consulta Uma consulta SQL que fornece as linhas a serem controladas pelo cursor Consulte o comando SELECT para obter mais informa es sobre os argumentos v lidos READ ONLY Palavra chave do SQL92 indicando que o cursor ser usado no modo apenas para leitura Como este o nico modo de acesso do cursor dispon vel no PostgreSQL esta palavra chave n o provoca qualquer efeito UPDATE Palavra chave do SQL92 indicando que o cursor ser usado para atualizar tabelas Como as atualiza es pelo cursor n o s o suportadas no momento pelo PostgreSQL esta palavra chave provoca uma mensagem informando o erro coluna Coluna s a serem atualizadas Como as atualiza es pelo cursor n o s o suportadas no momento pelo Post greSQL a cl usula UPDATE provoca uma mensagem informando o erro DECLARE Sa das DECLARE CURSOR Mensagem retornada se o SELECT for executado com sucesso WARNING Closing pre existing portal nome do cursor Esta mensagem exibida se o mesmo nome de cursor j estiver declarado no bloco de transa o corrente A defini o anterior descartada ERROR DECLARE CURSOR may only be used in begin end transaction blocks E
174. banco de dados mas por sorte n o cr tico definir o pr ximo OID corretamente 86 pg resetxlog A chave n nenhuma opera o instrui o pg resetxlog para imprimir os valores reconstru dos a partir de pg control e depois terminar sem modificar nada Isto principalmente uma ferramenta de depura o mas pode ser til para fazer uma verifica o antes de permitir que o pg resetxlog efetue a opera o de verdade Notas Este comando n o deve ser usado quando o postmaster estiver executando O pg resetx1og se recusa a iniciar quando encontra o arquivo de bloqueio do postmaster no diret rio de dados Se o postmaster terminar anor malmente ent o o arquivo de bloqueio pode ter sido deixado no diret rio neste caso o arquivo de bloqueio pode ser removido para permitir a execu o do pg resetxlog mas antes de fazer isto deve haver a certeza de que nem o postmaster nem nenhum processo servidor ainda est executando 87 postgres Nome postgres executa o servidor PostgreSQL no modo monousu rio Sinopse postgres A 0 1 B num buffers c nome valor d n vel de depura o D diret rio de dados e E fsliltlnIm Ih F i N o nome do arquivo 0 P s I tpalpllex S mem ria para ordena o W segundos nome valor banco de dados postgres A 0 1 I B num buffers c nome valor d n vel de depura o D diret rio de dados e fsliltlinim h F Li o nome do a
175. base removal failed Aconteceu algum erro 2 Havendo uma condi o de erro a mensagem de erro do servidor exibida Consulte o comando DROP DATABASE e o aplicativo psql para ver as causas poss veis Ambiente PGHOST PGPORT PGUSER Par metros padr o para a conex o Exemplos Para remover o banco de dados demo do servidor de banco de dados padr o dropdb demo DROP DATABASE 19 dropdb Para remover o banco de dados demo usando o servidor na m quina eden porta 5000 com confirma o e vendo o comando utilizado dropdb p 5000 h eden i e demo Database demo will be permanently deleted Are you sure y n y DROP DATABASE demo DROP DATABASE Consulte tamb m createdb DROP DATABASE 20 droplang Nome droplang remove uma linguagem procedural do PostgreSQL Sinopse droplang op es de conex o nome da linguagem nome bd droplang op es de conex o listl l nome bd Descri o O droplang um utilit rio para remover de um banco de dados do PostgreSQL uma linguagem de programa o ex istente O droplang pode remover qualquer linguagem procedural mesmo quelas n o fornecidas na distribui o do PostgreSQL Embora as linguagens de programa o do servidor possam ser removidas diretamente usando v rios comandos SQL recomenda se usar o droplang porque este executa v rias verifica es e muito mais f cil de usar Consulte o comando DROP LANGUAGE para obter
176. bela a partir do resultado de uma consulta Sinopse SELECT ALL DISTINCT ON express o 11 express o AS nome de sa da INTO EMPORARY TEMP TABLE nova tabela FROM item de WHERE condi o GROUP BY express o HAVING condi o UNION INTERSECT EXCEPT ALL select ORDER BY express o ASC DESC USING operador 1 LIMIT contador ALL OFFSET in cio FOR UPDATE OF nome da tabela 11 Entradas TEMPORARY TEMP Se for especificado a tabela criada como sendo uma tabela tempor ria Consulte o comando CREATE TABLE para obter detalhes nova tabela O nome opcionalmente qualificado pelo esquema da tabela a ser criada Todas as outras entradas est o descritas detalhadamente no comando SELECT Sa das Consulte os comandos CREATE TABLE e SELECT para obter um sum rio das mensagens de sa da poss veis Descri o O comando SELECT INTO cria uma nova tabela e a preenche com os dados produzidos por uma consulta Os dados n o s o retornados para o cliente como acontece em um comando SELECT normal As colunas da nova tabela possuem os mesmos nomes e tipos de dado das colunas de sa da do comando SELECT Nota O comando CREATE TABLE AS funcionalmente equivalente ao comando SELECT INTO A sintaxe CREATE TABLE AS recomendada porque SELECT INTO n o padr o Al m disso esta forma do SEL
177. bjeto grande recebeu o identificador de objeto 152801 que deve ser lembrado para acessar o objeto novamente Por esta raz o recomenda se associar sempre um coment rio intelig vel a todos os objetos Estes podem ser vistos atrav s do comando N1o list Observe que este comando sutilmente diferente da fun o 1o import do servidor porque atua como o usu rio local no sistema de arquivos local em vez do usu rio e sistema de arquivos do servidor Nota Veja a descri o da vari vel LO TRANSACTION para obter informa es importantes com rela o a todas as opera es com objetos grandes Vlo list Mostra a lista contendo todos os objetos grandes do PostgreSQL armazenados atualmente no banco de dados juntamente com os coment rios fornecidos para os mesmos lo_unlink loid Exclui do banco de dados o objeto grande com o OID iguala loid Dica Use lo_list para descobrir os OIDs dos objetos grandes Nota Veja a descri o da vari vel LO_TRANSACTION para obter informa es importantes com rela o a todas as opera es com objetos grandes 57 psgl Yo fnome do arquivo comando p Salva os resultados das pr ximas consultas no arquivo nome do arquivo ou envia os pr ximos resul tados para uma outra she11 do Unix para executar o comando Se nenhum argumento for especificado a sa da da consulta ser enviada para stdout Os resultados das consultas incluem todas as tabelas respostas dos comando
178. bserve que o comando CREATE TYPE e os mecanismos de extens o de tipo do PostgreSQL s o diferentes do SQL99 Consulte tamb m CREATE TYPE DROP USER Nome DROP USER remove uma conta de usu rio do banco de dados Sinopse DROP USER nome Descri o O comando DROP USER remove o usu rio especificado do banco de dados N o remove tabelas vis es ou outros objetos de propriedade do usu rio Se o usu rio possuir algum banco de dados uma mensagem de erro gerada Par metros nome O nome de um usu rio existente Diagn sticos DROP USER Mensagem retornada se o usu rio for exclu do com sucesso ERROR DROP USER user nome does not exist Mensagem retornada se o nome do usu rio n o for encontrado DROP USER user nome owns database nome cannot be removed Primeiro o banco de dados deve ser exclu do ou mudar de dono Notas Use o comando CREATE USER para adicionar novos usu rios e o ALTER USER para mudar seus atributos O PostgreSQL tem o aplicativo dropuser que possui a mesma funcionalidade deste comando na verdade chama este comando mas que pode ser executado a partir da linha de comandos DROP USER Exemplos Para remover uma conta de usu rio DROP USER Jjosias Compatibilidade O comando DROP USER uma extens o do PostgreSQL linguagem O padr o SQL deixa a defini o dos usu rios para a implementa o See Also CREATE USE
179. cedural n o pode substituir uma das linguagens nativas do PostgreSQL Por compatibilidade com as vers es anteriores o nome pode ser escrito entre ap strofos HANDLER tratador de chamadas O tratador de chamadas o nome de uma fun o previamente registrada que vai ser chamada para executar as fun es escritas nesta linguagem procedural O tratador de chamadas para a linguagem procedural deve ser escrito em uma linguagem compilada como C com a conven o de chamadas vers o 1 registrada no PostgreSQL como uma fun o que n o recebe nenhum argumento e com retorno do tipo language handler que um tipo usado apenas para identificar a fun o como tratadora de chamadas CREATE LANGUAGE VALIDATOR fun o de valida o fun o de valida o nome de uma fun o registrada previamente que ser chamada sempre que for criada uma nova fun o nesta linguagem para validar a nova fun o Se nenhuma fun o validadora for especificada ent o a nova fun o n o ser verificada ao ser criada A fun o validadora deve receber um argumento do tipo oida que o OID identificador do objeto da fun o a ser criada retornando usualmente void A fun o validadora tipicamente inspeciona o corpo da fun o para verificar se a sintaxe est correta mas tamb m pode verificar outras propriedades da fun o como por exemplo certos tipos de argumentos que a linguagem n o pode tratar Para sinalizar um erro a fu
180. cer erros devido duplicidade de defini es dos objetos adicionados Para criar um banco de dados vazio sem nenhuma adi o local deve se faz lo a partir do template0 e n o do templatel Por exemplo CREATE DATABASE foo WITH TEMPLATE template As limita es do pg restore est o descritas abaixo 45 pg restore e Ao se restaurar os dados para tabelas pr existentes o pg restore emite comandos para desativar os gatilhos das tabelas dos usu rios antes de inserir os dados e comandos para reativ los ap s os dados terem sido inseridos Se a restaura o for interrompida no meio os cat logos do sistema podem ficar em um estado errado O pg restore n o restaura objetos grandes para uma nica tabela Se o arquivo de exporta o cont m objetos grandes ent o todos os objetos grandes s o restaurados Consulte tamb m a documenta o do pg dump para obter detalhes sobre as limita es do pg dump Exemplos Para exportar um banco de dados pg dump meu bd gt bd out Para importar este banco de dados psql d database f bd out Para exportar um banco de dados chamado meu bd que cont m objetos grandes para um arquivo tar pg dump Ft b meu bd gt bd tar Para importar este banco de dados com os objetos grandes para um banco de dados existente chamado bd novo pg restore d bd novo bd tar Para reordenar os itens do banco de dados primeiro neces rio exportar
181. cesso em segundo plano background provavel mente durante a inicializa o do sistema operacional Um postmaster gerencia sempre os dados de exatamente um agrupamento de bancos de dados Um agrupamento de bancos de dados uma cole o de bancos de dados que armazenada em um local comum no sistema de arquivos Quando o postmaster inicia necessita saber a localiza o dos arquivos do agrupamento de bancos de dados rea de dados o que feito atrav s da op o de chamada D ou atrav s da vari vel de ambiente PGDATA n o existe nenhum valor padr o Mais de um processo postmaster pode estar executando no sistema operacional no mesmo instante desde que utilizem reas de dados diferentes e portas de comunica o diferentes veja abaixo A rea de dados criada pelo aplicativo initdb Op es Consulte o Guia do Administrador para ver uma discuss o detalhada das op es Pode se evitar digitar a maior parte destas op es usando o arquivo de configura o O postmaster aceita os seguintes argumentos de linha de comando A OU Ativa a verifica o das assertivas de tempo de execu o o que uma ajuda de depura o para detectar enganos de programa o S est dispon vel quando habilitada durante a compila o Se for o padr o ativa B num buffers Define o n mero de buffers compartilhados para uso pelos processos servidores SHARED BUFFERS num buffers Por padr o 64 buffers cada um de 8
182. ciona no psql esta op o tamb m aumenta a portabilidade te rica do script gerado Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg restore X disable triggers disable triggers Esta op o somente relevante quando criado um arquivo de exporta o de dados apenas Informa ao pg dump para incluir comandos que desativam temporariamente os gatilhos da tabela de destino enquanto os dados s o recarregados Deve ser utilizado quando existem verifica es de integridade referencial ou outros gatilhos na tabela que n o se deseja utilizar durante a recarga dos dados Atualmente os comandos emitidos para disable triggers devem ser executados como um supe rusu rio Portanto tamb m deve ser fornecido o nome de um superusu rio com S ou de prefer ncia ser especificado use set session authorization e depois com cuidado executar o script produzido como um superusu rio Se nenhuma das op es for fornecida todo o script deve ser executado como um superusu rio Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg restore D O compress 0 9 Especifica o n vel de compress o a ser usado nos arquivos com formatos que suportam compress o atual mente somente o formato personalizado suporta compress o 34 pg dump As seguintes
183. cl usula ORDER BY aplicada ao resultado de uma consulta com UNION INTERSECT ou EXCEPT pode apenas especificar um nome ou um n mero de coluna mas n o uma express o Observe que se um item do ORDER BY for um nome simples que corresponda tanto ao nome de uma coluna do resultado quanto ao nome de uma coluna da entrada o ORDER BY vai interpretar como sendo o nome da coluna do resultado Esta op o oposta a que feita pelo GROUP BY na mesma situa o Esta inconsist ncia determinada pelo padr o SQL92 Opcionalmente pode ser utilizada a palavra chave DESC descendente ou Asc ascendente ap s cada nome de coluna na cl usula ORDER BY Se nada for especificado ASC assumido por padr o Como alternativa um nome de operador de ordena o espec fico pode ser especificado Asc equivalente a USING lt e DESC equivalente a USING gt O valor nulo possui uma posi o de ordena o superior a de qualquer outro valor do dom nio Em outras palavras na ordena o ascendente os valores nulos aparecem no final e na ordena o descendente os valores nulos apare cem no in cio Os dados dos tipos caractere s o ordenados de acordo com locale specific collation order that was established when the database cluster was initialized A cl usula UNION tabela consulta UNION ALL tabela consulta ORDER BY express o ASC DESC USING operador LIMIT contador ALL OFFSET in cio
184. co para todo o banco de dados use uma combina o do tableoid OID da tabela com o OID da linha para esta finalidade prov vel que nas vers es futuras do PostgreSQL existam contadores OID separados para cada tabela ent o ser necess rio e n o opcional incluir O tableoid para ter se um identificador nico para todo o banco de dados Dica O uso de WITHOUT OIDS N o recomendado para tabelas sem chave prim ria porque sem um OID e sem uma chave de dados nica fica dif cil identificar uma linha espec fica e O PostgreSQL cria automaticamente um ndice para cada restri o de unicidade e de chave prim ria para garantir a sua unicidade Portanto n o necess rio criar um ndice expl cito para as colunas da chave prim ria Consulte o comando CREATE INDEX para obter mais informa es CREATE TABLE O padr o SQL92 especifica que as restri es CHECK de colunas podem referenciar apenas a coluna qual se aplica somente restri es CHECK de tabelas podem fazer refer ncias a v rias colunas O PostgreSQL n o imp e esta restri o as restri es de tabela e de colunas s o tratadas da mesma maneira e As restri es de unicidade e de chave prim ria n o s o herdadas na implementa o atual tornando o compor tamento da combina o de heran a com restri o de unicidade diferente do esperado Examplos Criar a tabela filmes e a tabela distribuidores CREATE TABLE filmes
185. conjunto compat vel de par met EXECUTE sen o um erro vai ser gerado Observe que diferentemente das Para obter mais informa es sobre a cria o e a utiliza o de consultas preparadas consulte o comando PREPARE Compatibidade SQL92 O SQL92 inclui um comando Ex ECUT E mas apenas para ser usado no SQL embutido nos clientes O comando EXECUTE implementado pelo PostgreSQL tamb m usa uma sintaxe um pouco diferente EXPLAIN Nome EXPLAIN mostra o plano de execu o de uma instru o Sinopse EXPLAIN ANALYZE VERBOSE consulta Entradas ANALYZE Sinalizador para executar a consulta e mostrar os tempos reais de execu o VERBOSE Sinalizador para mostrar o plano de execu o detalhado consulta Qualquer consulta Sa das Query plan Plano de execu o expl cito do planejador do PostgreSQL Nota Antes do PostgreSQL 7 3 o plano da consulta era exibido na forma de uma mensagem tipo NOTICE Agora exibida na forma do resultado de uma consulta formatado como uma tabela de uma nica coluna do tipo texto Descri o Este comando mostra o plano de execu o que o planejador do PostgreSQL gera para a consulta fornecida O plano de execu o mostra como a s tabela s referenciada pela consulta ser varrida por uma varredura sequencial varredura do ndice etc e se v rias tabelas forem referenciadas quais algoritmos de j
186. dade envolvida As op es RESTRICT e JOIN ajudam o otimizador de consultas a estimar o tamanho dos resultados Se uma cl usula da forma minhas caixas descricao lt lt lt caixa 0 0 1 1 estiver presente na qualifica o ent o o PostgreSQL poder ter que estimar a fra o das inst ncias de minhas caixas que satisfazem a cl usula A fun o proc restr deve ser uma fun o registrada o que significa ter sido definida usando o comando CREATE FUNCTION que aceita argumentos do tipo de dado correto e que retorna um n mero de ponto flutuante O otimizador de consultas simplesmente chama esta fun o passando o par metro 0 0 1 1 e multiplica o resultado pelo tamanho da rela o para obter o n mero esperado de inst ncias Analogamente quando os dois operandos do operador cont m vari veis inst ncias o otimizador deve estimar o tamanho da jun o resultante A fun o proc juncao retornar outro n mero de ponto flutuante que ser multiplicado pelas cardinalidades das duas tabelas envolvidas para calcular o tamanho esperado do resultado A diferen a entre a fun o meu procedimento 1 minhas caixas descricao caixa 0 0 1 1 CREATE OPERATOR e o operador minhas caixas descricao caixa 0 0 1 1 que o PostgreSQL tenta otimizar operadores e pode decidir usar um ndice para restringir o espa o de procura quando operadores est o envolvidos Entretanto n o existe
187. dados S nome do usu rio Ssuperuser nome do usu rio Especifica o nome do superusu rio a ser utilizado para desativar os gatilhos Esta op o somente 2 2 relevante quando disable triggers utilizado Normalmente melhor especificar 33 pg dump use set session authorization e depois executar o script produzido como um superusu rio t tabela table tabela Exporta os dados da tabela apenas E verbose Especifica o modo verboso Faz com que o pg dump exiba as mensagens de progresso na sa da de erro padr o X no privileges no acl Impede gerar os privil gios de acessos comandos GRANT REVOKE X use set session authorization use set session authorization Normalmente se o script modo texto puro gerado pelo pg dump necessita trocar o usu rio corrente do banco de dados por exemplo para definir o dono correto do objeto usado o comando connect do psql Este comando na verdade abre uma nova conex o o que pode requerer a interven o manual por exemplo senhas Se for usada a op o X use set session authorization ent o o pg dump vai usar o comando SET SESSION AUTHORIZATION Embora produza o mesmo efeito requer que o usu rio que for fazer a importa o do banco de dados a partir do script gerado seja um superusu rio Esta op o substitui a op o R Como o SET SESSION AUTHORIZATION um comando SQL padr o enquanto o Yconnect somente fun
188. de mem ria compartilhada e os sem foros definidos pertencentes ao usu rio corrente Foi desenvolvido para ser usado para fazer a limpeza ap s a queda do servidor PostgreSQL postmaster Note que reiniciar o servidor imediatamente tamb m limpa a mem ria compartilhada e os sem foros portanto este comando possui pouca utilidade pr tica Somente o administrador do banco de dados deve executar este programa porque pode ocasionar um compor tamento bizarro i e quedas se for executado durante uma sess o multiusu ria Se este comando for executado enquanto o postmaster estiver executando a mem ria compartilhada e os sem foros alocados pelo postmaster ser o eliminados causando uma falha geral nos processos servidores iniciados pelo postmaster Notas Este script um hack mas durante estes muitos anos desde que foi escrito ningu m conseguiu desenvolver uma solu o igualmente efetiva e port vel Como agora o postmaster pode se autolimpar n o prov vel que o ipcclean seja melhorado no futuro Este script faz pressuposi es sobre o formato da sa da do utilit rio ipcs que podem n o ser verdadeira entre sistemas operacionais diferentes Portanto pode ser que n o funcione no seu sistema operacional 80 pg ctl Nome pg ctl1 inicia p ra ou reinicia o servidor PostgreSQL Sinopse pg ctistart w s D diret rio de dados I nome do arquivo 0 op es p caminho pg ctistop W s D dire
189. de ser usado mas o banco de dados recuperado deve ser considerado ainda mais suspeito do que o usual uma c pia de seguran a imediata e sua recarga imperativa N o deve ser executada nenhuma opera o que modifique os dados do banco de dados antes de ser feita a c pia de seguran a porque uma atividade deste tipo pode piorar ainda mais a situa o As chaves o x e 1 permitem definir manualmente o pr ximo OID o pr ximo ID de transa o e o endere o inicial do WAL Somente ser o necess rios quando o pg resetx1og n o conseguir determinar os valores apro priados atrav s da leitura do arquivo pg control Um valor seguro para o identificador da pr xima transa o pode ser determinado verificando se o maior nome de arquivo em SPGDATA pg clog somando se 1 e depois multiplicando se por 1 048 576 Observe que os nomes dos arquivos est o em hexadecimal Normalmente mais f cil especificar o valor da chave em hexadecimal tamb m Por exemplo se 0011 for a maior entrada em pg clog ent o x 0x1200000 servir cinco zeros direita fornecem o multiplicador apropriado O endere o inicial do WAL deve ser maior do que qualquer n mero de arquivo presente em PGDATA pg_xlog Estes val ores tamb m est o em hexadecimal possuindo duas partes Por exemplo se 000000FF0000003A for a maior entrada em pg x1og ent o 1 0xFF 0x3B servir N o existe nenhuma maneira t o f cil de se determinar o pr ximo OID acima do maior existente no
190. deve se criar uma vis o possuindo as colunas desejadas e conceder os privil gios nesta vis o Deve ser usado o comando dp do psql para obter informa es sobre os privil gios concedidos Por exemplo lusitania gt dp mytable Access privileges for database lusitania Schema Table Access privileges cestos 2 2 public mytable r miriam arwdRxt group todos arw 1 row As informa es mostradas pelo comando dp s o interpretadas da seguinte forma xxxx privil gios concedidos para PUBLIC uname xxxx privil gios concedidos para o usu rio group gname xxxx privil gios concedidos para o grupo r gt SELEC leitura w UPDATE escrita a INSERT inclus o da DELE F R RULE x REFERENCES t TRIGGER X EXECUTE U USAGE C CREATE T TEMPORARY arwdRxt ALL PRIVILEGES para tabelas O exemplo acima seria visto pela usu ria miriam ap s esta ter criado a tabela mytable e executado GRAN ELECT ON mytable TO PUBLIC GRANT SELECT UPDATE INSERT ON mytable TO GROUP todos 92 Se a coluna Access privileges estiver vazia para um dado objeto significa que o objeto possui os privil gios padr o ou seja seu campo de privil gios cont m NULL Os privil gios padr o sempre incluem todos os priv il gios para
191. difi cada Esta op o substitui a da ordem de OID oid order Q Restaura os itens na ordem de OID Por padr o o pg_dump ir exportar exporta os itens em uma ordem conveniente para o pg_dump e depois salvar o arquivo de exporta o em uma ordem de OID modificada Esta op o imp e a estrita ordem de OID Nno owner Impede qualquer tentativa de restabelecer o dono original do objeto O usu rio conectado ao banco de dados se torna o dono dos objetos P nome da fun o tipo do argumento function nome da fun o tipo do argumento e Especifica o procedimento ou a fun o a ser restaurada rearrange R Restaura os itens na ordem modificada de OID Por padr o o pg_dump ir exportar os itens em uma ordem conveniente para o pg_dump e depois salvar o arquivo de exporta o em uma ordem de OID modificada A maior parte dos objetos restaurada na ordem de OID mas alguns elementos por exemplo regras e ndices s o restaurados no fim do processo sem respeitar os OIDs Esta a op o padr o no reconnect 5 Durante a restaura o do arquivo de exporta o o pg_restore usualmente necessita reconectar ao banco de dados v ria vezes com nomes de usu rio diferentes para definir o dono correto dos objetos criados Se isto n o for desej vel por exemplo se a interven o manual for necess ria para cada reconex o esta op o pro be o pg_restore requisitar recone
192. do mais eficiente de executar uma consulta tabela O nome opcionalmente qualificado pelo esquema da tabela espec fica a ser limpa Por padr o todas as tabelas do banco de dados corrente coluna O nome da coluna espec fica a ser analisada Por padr o todas as colunas Sa das VACUUM O comando terminou INFO Relation tabela O cabe alho do relat rio da tabela VACUUM INFO Pages 98 Changed 25 Reapped 74 Empty 0 New 0 Tup 1000 Vac 3000 Crash 0 UnUsed 0 MinLen 188 MaxLen 188 Re using Free Avail Space 586952 586952 EndEmpty Avail Pages 0 74 Elapsed 0 0 sec A an lise da tabela INFO Index index Pages 28 Tuples 1000 Deleted 3000 Elapsed 0 0 sec A an lise de um ndice da tabela Descri o O comando VACUUM recupera a rea de armazenamento ocupada pelas tuplas exclu das Na opera o normal do PostgreSQL as tuplas que s o exclu das DELETE ou que se tornam obsoletas devido a uma atualiza o UPDATE n o s o fisicamente removidas da tabela elas permanecem presentes at que o comando VACUUM seja executado Portanto necess rio executar o VACUUM periodicamente especialmente em tabelas fregiientemente atualizadas Sem nenhum par metro o VACUUM processa todas as tabelas do banco de dados corrente Com um par metro o VACUUM processa somente esta tabela O comando VACUUM ANALYZE executa o comando VACUUM e depois o comando ANALYZE p
193. do para criar as funcionalidades desejadas Se o nome do esquema for fornecido por exemplo CREATE AGGREGATE meu esquema minha agregacao ent o a fun o de agrega o criada no esquema especificado sen o criada no esquema corrente aquele na frente do caminho de procura consulte o CURRENT SCHEMA Uma fun o de agrega o identificada pelo seu nome e pelo tipo de dado da entrada Duas fun es de agrega o no mesmo esquema podem possuir o mesmo nome no caso de operarem sobre dados de entrada de tipos diferentes O nome e o tipo de dado da entrada de uma fun o de agrega o tamb m deve ser diferente do do nome e do tipo de dado da entrada de todas as fun es comuns no mesmo esquema Uma fun o de agrega o constitu da de uma ou duas fun es comuns uma fun o de transi o de estado func trans estado e outra fun o opcional para a realiza o dos c lculos finais func final Estas fun es s o utilizadas da seguinte maneira func trans estado estado interno pr ximo item dado gt pr ximo estado interno func final estado interno gt valor da agrega o O PostgreSQL cria uma vari vel tempor ria do tipo tipo dado estado para armazenar o estado interno atual da agrega o Para cada item de dado da entrada a fun o de transi o de estado chamada para calcular o novo valor do estado interno Ap s todos os dados terem si
194. do processados a fun o final chamada uma vez para calcular o valor de sa da da agrega o Se n o houver nenhuma fun o final ent o o valor do estado final retornado A fun o de agrega o pode possuir uma condi o inicial ou seja um valor inicial para o valor de estado interno Este valor especificado e armazenado no banco de dados em um campo do tipo text mas deve possuir uma representa o externa v lida de uma constante do tipo de dado do estado Se n o for especificado ent o o valor do estado come a com NULL Se a fun o de transi o de estado for declarada como strict ent o n o poder ser chamada com valores da entrada nulos Para este tipo de fun o de transi o a execu o da agrega o realizada da seguinte maneira Valores da entrada nulos s o ignorados a fun o n o chamada e o valor do estado anterior permanece Se o valor do estado inicial for nulo ent o o primeiro valor de entrada que n o for nulo substitui o valor do estado e a fun o de transi o chamada a partir do segundo valor de entrada que n o for nulo Este procedimento til para implementar fun es de agrega o como max Note que este comportamento somente est dispon vel quando o tipo dado estado for do mesmo tipo do tipo dado entrada Quando estes tipos de dado CREATE AGGREGATE forem diferentes dever ser fornecido um valor n o nulo para a condi o inicial ou utilizar uma fun o de
195. do texto O coment rio automaticamente exclu do quando o objeto exclu do Nota N o existe atualmente nenhum mecanismo de seguran a para os coment rios qualquer usu rio conectado ao banco de dados pode ver todos os coment rios dos objetos do banco de dados embora somente um superusu rio possa modificar coment rios de objetos que n o lhe pertencem Portanto n o coloque informa es confidenciais nos coment rios Utiliza o Adicionar um coment rio tabela minha tabela T COMMENT ON TABLE minha tabela IS Esta tabela minha Remover o coment rio T COMMENT ON TABLE minha tabela IS NULL Alguns outros exemplos COMMENT ON AGGREGATE minha agregacao double precision IS Calcula a vari ncia da amostra COMMENT ON COLUMN minha tabela meu campo IS N mero de identifica o do empregado COMMENT ON DATABASE meu bd IS Banco de dados de desenvolvimento COMMENT ON DOMAIN meu dominio IS Dom nio d ndere o de correio eletr nico COMMENT ON FUNCTION minha funcao timestamp IS Retorna o n mero em algarismos romanos COMMENT ON INDEX my index IS Enforces uniqueness on employ idt COMMENT ON OPERATOR text text IS Realiza a interse o de dois textos COMMENT ON OPERATOR NONE text IS Este um operador de prefixo no texto COMMENT ON RULE minh
196. dores de sistema do PostgreSQL A utiliza o de qual quer uma destas op es altamente desaconselhada Al m disso qualquer uma destas op es poder mudar ou desaparecer em vers es futuras sem nenhum aviso 89 postgres ftilslilmln h Pro be o uso de um m todo de varredura ou de jun o em particular s e i desativam as varreduras segiien ciais e de ndices respectivamente enquanto que n me h desativam as jun es de la o aninhado mesclagem e hash respectivamente Nota Nem as varreduras sequenciais nem as jun es de la o aninhado podem ser desativadas com pletamente as op es fs e fn simplesmente desencorajam o uso pelo otimizador de planos deste tipo se houver alguma outra alternativa Pro be a execu o da consulta mas mostra a rvore do plano Permite modificar a estrutura das tabelas do sistema Usado pelo initdb p banco de dados Indica que este servidor foi inicializado pelo postmaster fazendo suposi es diferentes sobre o gerenciamento do buffer pool descritores de arquivos etc t palrser pl anner e lxecutor Exibe estat sticas de tempo para cada comando relacionando com cada um dos principais m dulos do sis tema Esta op o n o pode ser usada junto com a op o s v vers o do protocolo Especifica o n mero da vers o do protocolo cliente servidor a ser usado por esta sess o em particular W segundos T o logo esta op o seja encontrada o processo adormec
197. dos tipos indicados O operador comutador deve ser identificado se existir para que o PostgreSQL possa reverter a ordem dos operan dos se desejar Por exemplo o operador area menor do que lt lt lt provavelmente teria o operador comutador area maior do que gt gt gt Com isso o otimizador de consultas poderia livremente converter caixa EStO 0 LENJE gt gt gt minhas caixas descricao em minhas caixas descricao lt lt lt caixa 0 0 1 1 Isto permite o c digo de execu o sempre utilizar a ltima representa o e simplifica um pouco o otimizador de consultas Analogamente se existir um operador negador ent o este deve ser identificado Suponha que exista um oper ador area igual assim como um area diferente A liga o negador permite ao otimizador de consultas simplificar NOT minhas caixas descricao caixa 0 0 1 1 para minhas caixas descricao caixa 0 0 1 1 CREATE OPERATOR Se for fornecido o nome de um operador comutador o PostgreSQL procura o no cat logo Se encontr lo e este ainda n o tiver um comutador pr prio ent o a entrada do comutador atualizada para ter o novo operador criado como sendo o seu comutador Aplica se igualmente ao negador Isto serve para permitir a defini o de dois operadores que s o o comutador ou o negador um do outro O primeiro operador deve ser definido sem um comutador ou negador conforme apropriado Quando o segundo ope
198. ds g or terminate with semicolon to execute query q to quit testdb gt No prompt o usu rio pode digitar comandos SQL Normalmente as linhas de entrada s o enviadas para o servidor quando o caractere ponto e v rgula que termina o comando encontrado Um caractere de fim de linha n o termina um comando Portanto os comandos podem ocupar v rias linhas para clareza Se o comando for enviado e executado sem erro o resultado do comando ser exibido na tela Sempre que um comando executado o psql tamb m procura por eventos de notifica o ass ncronos gerados pelo LISTEN e NOTIFY Meta comandos Qualquer texto digitado no psql que comece por uma contrabarra N n o entre ap strofos um meta comando do psgl que processado pelo pr prio psql Estes comandos tornam o psql interessante para a administra o e para scripts Os meta comandos s o usualmente chamados de comandos de barra ou de contrabarra O formato do comando psql a contrabarra seguida imediatamente pelas letras do comando e depois pelos argumentos Os argumentos s o separados das letras do comando e entre si por qualquer n mero de caracteres de espa o Para incluir caracteres de espa o em um argumento deve se coloc los entre ap strofos Para incluir um ap strofo neste tipo de argumento deve se preced lo por uma contrabarra Qualquer texto entre ap strofos est sujeito s substitui es no estilo C para o in nova linha t tabul
199. duas consul tas em vez de todas as linhas presentes nas duas consultas O resultado do INTERSECT n o possui nenhuma linha repetida a menos que a op o ALL seja especificada Com ALL uma linha que possui m repeti es em L e n repeti es em R aparece min m n vezes Quando existem v rios operadores INTERSECT no mesmo comando SELECT estes s o processados da esquerda para a direita a menos que os par nteses estabele am outra ordem INTERSECT tem preval ncia sobre UNION ou seja A UNION B INTERSECT C processado como A UNION B INTERSECT C a menos que outra ordem seja estabelecida pelo uso de par nteses A cl usula EXCEPT tabela consulta EXCEPT ALL tabela consulta ORDER BY express o ASC DESC USING operador LIMIT contador ALL OFFSET in cio onde tabela consulta especifica qualquer express o de sele o sem as cl usulas ORDER BY LIMIT ou FOR UPDATE EXCEPT semelhante a UNION exceto que retorna somente as linhas presentes na sa da da consulta esquerda mas que n o est o presentes na sa da da consulta direita O resultado do EXCEPT n o possui nenhuma linha repetida a menos que a op o ALL seja especificada Com ALL uma linha que possui m repeti es em L e n repeti es em R aparece max m n 0 vezes Quando existem v rios operadores EXCEPT no mesmo comando SELECT estes s o processados da esquerda para a direita a menos que os par
200. e STORAGE tipo de armazenamento E Entradas nome O nome da classe de operadores a ser criada O nome pode ser qualificado pelo esquema w EFAULT Se estiver presente a classe de operadores se tornar a classe de operadores padr o do ndice para o seu tipo de dado No m ximo uma classe de operadores pode ser padr o para um determinado tipo de dado e m todo de acesso tipo de dado O tipo de dado da coluna que esta classe de operadores se aplica m todo de acesso O nome do m todo de acesso do ndice que esta classe de operadores se destina n mero da estrat gia O n mero de estrat gia do m todo de acesso para um operador associado com a classe de operadores identificador do operador O identificador opcionalmente qualificado pelo esquema de um operador associado com a classe de oper adores tipo O s tipo s de dado de entrada de um operador ou NONE significando um operador un rio esquerdo ou un rio direito Os tipos de dado de entrada podem ser omitidos no caso normal onde s o id nticos ao tipo de dado da classe de operadores RECH ECK Se estiver presente o ndice lossy para este operador e portanto as tuplas buscadas usando o ndice deve ser verificadas novamente para garantir que realmente satisfazem a cl usula de qualifica o envolvendo este operador n mero de suporte O n mero do procedimento de
201. e queles que correspondem ao padr o edit ou Ne nome do arquivo Seo nome do arquivo for especificado o arquivo editado ap s o fim da execu o do editor o con te do do arquivo copiado para o buffer de comando Se nenhum argumento for fornecido o buffer de comando corrente copiado para um arquivo tempor rio que editado de maneira id ntica O novo buffer de comando ent o analisado novamente de acordo com as regras normais do psql onde todo o buffer tratado como sendo uma nica linha Portanto n o podem ser gerados scripts dessa maneira Use o comando i para fazer isso Assim sendo se o comando terminar por ou contiver um ponto e v rgula ser executado imediatamente sen o apenas permanece aguardando no buffer de comando 55 psql Dica O psq procura nas vari veis de ambiente PSOL EDITOR EDITOR VISUAL nesta ordem o editor a ser usado Se nenhuma delas estiver definida ent o bin vi usado echo texto Envia os argumentos para a sa da padr o separados por um espa o e seguido por um caractere de nova linha podendo ser til para intercalar informa es na sa da dos scripts Por exemplo gt echo date Tue Oct 26 21 40 57 CEST 1999 Se o primeiro argumento for n n o entre ap strofos o caractere de nova linha final n o gerado Dica Se for usado o comando o para redirecionar a sa da dos comandos talvez se deseje utilizar qecho em vez deste comando
202. e ALL omitida distribuidores atores did nome id nome als pa 108 Westward al Woody Allen 111 Walt Disney 2 Warren Beatty 112 Warner Bros 3 Walter Matthau SELECT distribuidores nome FROM distribuidores WHERE distribuidores nome LIKE ION ELECT atores nome FROM atores WHERE atores nome LIKE W E ae aq op nome Walt Disney Walter Matthau Warner Bros Warren Beatty Westward Woody Allen O exemplo abaixo mostra como usar uma fun o de tabela com e sem uma lista de defini o de coluna distribuidores id nome 108 KRL 112 Westward Walt Disney Warner Bros CREATE FUNCTION distribuidores int ETURNS SETOF distribuidores AS ECT FROM distribuidores WHERE id 1 ANGUAGE SQL u wW SELECT FROM distribuidores 111 id name 111 Walt Disney 1 row CREATE FUNCTION distribuidores 2 int RETURNS SETOF RECORD AS 11 SELECT SELECT FROM distribuidores WHERE id 1 LANGUAGE SQL SELECT FROM distribuidores 2 111 AS f1 int f2 text fil f2 111 Walt Disney 1 row Compatibilidade Extens es O PostgreSQL permite que seja omitida a cl usula FROM da consulta Esta funcionalidade da linguagem de con sulta
203. e a condi o clim tica mais recente para cada local mas se ORDER BY n o tivesse sido usado para for ar uma ordem descendente dos valores da data para cada local teria sido obtido um relat rio com datas aleat rias para cada local A cl usula GROUP BY permite dividir a tabela em grupos de linhas que correspondem a um ou mais valores Veja A cl usula GROUP BY A cl usula HAVING permite selecionar somente os grupos de linhas que atendem a uma condi o espec fica Veja A cl usula HAVING SELECT A cl usula ORDER BY faz com que as linhas retornadas sejam classificadas na ordem especificada Se ORDER BY n o for especificado as linhas retornam na ordem que o sistema considera mais f cil de gerar Veja A cl usula ORDER BY As consultas SELECT podem ser combinadas usando os operadores UNION INTERSECT e EXCEPT Use par nteses se for necess rio para determinar a ordem destes operadores O operador UNION computa a cole o das linhas retornadas pelas consultas envolvidas As linhas duplicadas s o eliminadas a n o ser que ALL seja especificado Veja A cl usula UNION O operador INTERSECT computa as linhas que s o comuns s duas consultas interse o As linhas duplicadas s o eliminadas a n o ser que ALL seja especificado Veja A cl usula INTERSECT O operador EXCEPT computa as linhas que s o retornadas pela primeira consulta mas que n o s o retornadas pela segunda consulta As linhas duplicadas s o eliminada
204. e a quantidade especificada de segundos dando ao desenvolvedor tempo para ligar o depurador ao processo servidor Ambiente PGDATA Localiza o padr o do diret rio de dados Para outras que possuem pouca influ ncia durante o modo mono usu rio consulte o postmaster Notas Para terminar a execu a de um comando deve ser usado o sinal SIGINT Para fazer com que o postgres leia novamente o arquivo de configura o deve ser usado o sinal SIGHUP O postmaster utiliza o sinal SIGTERM para dizer a um processo postgres que o mesmo deve terminar normalmente e SIGQUIT para que termine sem executar os procedimentos de limpeza normais Estes sinais n o devem ser utilizados pelos usu rios 90 postgres Utiliza o Inicie o servidor aut nomo com um comando do tipo postgres D SPGDATA outras op es meu bd Forne a o caminho correto para a rea de banco de dados com D ou garanta que a vari vel de ambiente PGDATA esteja definida Tamb m especifique o nome do banco de dados em que deseja trabalhar Normalmente o servidor aut nomo trata o caractere de nova linha como t rmino da entrada n o existe intelig n cia com rela o ao ponto e v rgula como existe no psgl Para estender um comando por v rias linhas deve ser digitado uma contrabarra 1 logo antes de cada nova linha exceto a ltima Mas se for usada a chave de linha de comando N o caractere de nova linha n o termina a entrada do comando O servidor vai ler
205. e comando ao iniciar o postmaster Mesmo quando o autocommit autoefetiva o est definido como off o comando SHOW n o inicia um novo bloco de transa o Veja a se o sobre autocommit no Guia do Administrador para obter detalhes Diagn sticos ERROR Option nome is not recognized Mensagem retornada quando nome n o corresponde a um par metro existente SHOW Exemplos Mostrar o valor corrente de Datestyle estilo da data SHOW DateStyle DateStyle ISO with US NonEuropean conventions 1 row Mostrar o estado corrente do otimizador gen tico gego SHOW GEQO Mostrar todas as defini es SHOW ALL name setting australian timezones off authentication timeout 60 checkpoint segments 3 wal debug l0 wal_sync_method fdatasync 94 rows Compatibilidade O comando SHOW uma extens o do PostgreSQL linguagem Consulte tamb m A fun o current_setting produz uma sa da semelhante Veja Fun es Diversas Miscellaneous Functions no Guia do Usu rio do PostgreSQL START TRANSACTION Nome START TRANSACTION inicia um bloco de transa o Sinopse START TRANSACTION ISOLATION LEVEL READ COMMITTED op ERIALIZABLE Entradas Nenhuma Sa das START TRANSACTION Mensagem retornada se o comando for executado com sucesso WARNING BEGIN already a transaction in progress Se houver uma transa o em andame
206. e informa es de controle que abragem todo o servidor Sinopse pg controldata diret rio de dados Descri o O aplicativo pg controldata retorna informa es definidas durante a execu o do initdb tal como a regi o e a vers o do cat logo do servidor Mostra tamb m informa es sobre a grava o pr via do registro no log WAL e o processamento dos pontos de controle checkpoint Estas informa es abragem todo o servidor n o sendo espec ficas para um determinado banco de dados Este utilit rio somente pode ser executado pelo usu rio que instalou o servidor porque necessita de acesso de leitura para o diret rio de dados Pode ser especificado o diret rio de dados na linha de comando ou pode ser usada a vari vel de ambiente PGDATA Ambiente PGDATA Localiza o padr o do diret rio de dados 85 pg resetxlog Nome pg resetxlog redefine o conte do do log de escrita pr via e do arquivo pg control Sinopse pg resetxlog f n ocoid xxid lfileid seg diret rio de dados Descri o O pg resetx1og limpa o log de escrita pr via WAL e opcionalmente redefine alguns campos do arquivo pg control O uso deste aplicativo necess rio quando os dados destes arquivos est o corrompidos Deve ser utilizado apenas como ltimo recurso quando o servidor n o iniciar devido corrup o destes arquivos Ap s executar este comando deve ser poss vel iniciar o servidor mas deve se ter em m
207. e normalmente iriam requerer alguma transforma o para aplic los aos dados base Por exemplo um ndice funcional em upper col permite que a cl usula WHERE upper col JIM use um ndice O PostgreSQL implementa os m todos de acesso B tree R tree hash e GisT para os ndices O m todo de acesso B t ree uma implementa o das B t rees de alta concorr ncia de Lehman Yao O m todo de acesso R tree implementa R trees padr o utilizando o algoritmo de parti o quadr tica de Guttman O m todo de acesso hash uma implementa o das dispers es lineares de Litwin Os algoritmos utilizados s o menciona dos apenas para informar que todos estes m todos de acesso s o inteiramente din micos n o necessitando de otimiza o peri dica como no caso de por exemplo m todos de acesso hash est ticos Quando a cl usula wHERE est presente um ndice parcial criado Um ndice parcial um ndice que cont m entradas apenas para uma parte da tabela geralmente uma parte mais interessante do que o resto da tabela CREATE INDEX Por exemplo havendo uma tabela contendo tanto pedidos faturados quanto n o faturados onde os pedidos n o faturados ocupam uma pequena fra o da tabela mas a parte mais consultada o desempenho pode ser melhorado criando se um ndice apenas para esta por o da tabela Uma outra aplica o poss vel a utiliza o da cl usula WHERE junto com UNIQUE para exigir a unicidade
208. e operadores tamb m especifica os procedimentos de apoio a serem usados pelo m todo de acesso do ndice quando a classe de operadores selecionada para uma coluna do ndice Todos os operadores e fun es utilizadas por uma classe de operadores devem ser definidas anstes da classe de operadores ser criada Se o nome do esquema for fornecido ent o a classe de operadores criada no esquema especificado sen o criada no esquema corrente aquele na frente do caminho de procura consulte CURRENT SCHEMA Duas classes de operadores no mesmo esquema podem ter o mesmo nome somente se forem para m todos de acesso diferentes do ndice O usu rio que cria a classe de operadores se torna o seu dono Atualmente para poder criar necess rio ser um superusu rio Esta restri o feita porque uma defini o errada de uma clase de operadores pode confundir ou mesmo derrubar o servidor CREATE OPERATOR CLASS does not presently check whether the class definition includes all the operators and functions required by the index access method It is the user s responsibility to define a valid operator class Consulte o cap tulo sobre extens es de interfaceamento para ndices no Guia do Programador do PostgreSQL para obter mais informa es CREATE OPERATOR CLASS Notas Consulte o DROP OPERATOR CLASS para excluir uma classe de operadores definida pelo usu rio do banco de dados Utiliza o O exem
209. e prim ria tamb m fornece metadados sobre o projeto do esquema porque chaves prim rias indicam que outras tabelas podem depender deste conjunto de colunas como um identificador nico para linhas Somente uma chave prim ria pode ser especificada para uma tabela seja como uma restri o de coluna ou como uma restri o de tabela A restri o de chave prim ria deve abranger um conjunto de colunas que seja diferente de outro conjunto de colunas abrangido por uma restri o de unicidade definida para a mesma tabela CK express o A cl usula CHECK especifica restri es de integridade ou testes que as linhas novas ou atualizadas devem atender para que uma opera o de inser o ou de atualiza o complete Cada restri o deve ser uma ex press o que produza um resultado booleano Uma condi o declarada na defini o da coluna deve fazer refer ncia apenas ao valor desta coluna enquanto uma condi o declarada como uma restri o da tabela pode fazer refer ncia a v rias colunas Atualmente as expres es de cHECK n o podem conter subconsultas nem fazer refer ncia a vari veis que n o sejam colunas da linha atual CREATE TABLE REFERENCES reftabl refcolumn MATCH matchtype 1 ON DELETE action ON UPDATE action restri o da coluna FOREIGN KEY nome da coluna REFERENCES tabela referenciada coluna
210. e se simplesmente aguardar alguns segundos at que o sistema operacional feche a porta antes de tentar novamente Final mente este erro pode acontecer se for especificado um n mero de porta que o sistema operacional considera ser reservado Por exemplo muitas vers es do Unix consideram os n meros de porta abaixo de 1024 como sendo trusted confiadas s permitindo o acesso aos superusu rios do Unix 95 postmaster Notas Sempre que for poss vel n o deve ser usado O SIGKILL para terminar o postmaster Isto impede que o postmaster libere os recursos do sistema utilizados mem ria compartilhada e sem foros por exemplo antes de terminar Para terminar o postmaster normalmente os sinais SIGTERM SIGINT ou SIGQUIT podem ser usados O primeiro aguarda todos os clientes terminarem antes de fechar o segundo for a a desconex o de todos os clientes e o terceiro fecha imediatamente sem um shut down apropriado acarretando a execu o da recupera o ao reiniciar O utilit rio pg ctl pode ser usado para iniciar e terminar o postmaster com seguran a e conforto As op es n o funcionam no FreeBSD nem no OpenBSD Use o c em seu lugar Esta uma falha destes sistemas operacionais uma vers o futura do PostgreSQL disponibilizar uma forma de contornar este problema caso n o seja corrigido Exemplos Para iniciar o postmaster em segundo plano usando os valores padr o S nohup postmaster gt logfile 2 gt amp 1 lt dev nu
211. e tipo de dado s o passados por valor e n o por refer ncia Observe que n o se pode passar por valor os tipos cuja representa o interna maior do que o comprimento do tipo Datum quatro bytes na maioria das m quinas oito bytes em algumas A palavra chave alinhamento especifica o alinhamento do armazenamento requerido por este tipo de dado Os valores permitidos igualam se ao alinhamento das fronteiras de 1 2 4 ou 8 bytes Observe que os tipos de tamanho vari vel devem ter um alinhamento de pelo menos 4 porque cont m necessariamente um int 4 como seu primeiro componente A palavra chave armazenamento permite selecionar estrat gias de armazenamento para tipos de dado de com primento vari vel somente plain permitido para os tipos de comprimento fixo O plain desativa TOAST para o tipo de dado ser sempre armazenado em linha e n o comprimido O extended permite toda a capacidade do TOAST o sistema primeiro tenta comprimir um valor longo do dado movendo o valor para fora da tabela prin cipal se ainda continuar muito longo O external permite que o valor seja movido para fora da tabela principal mas o sistema n o vai tentar comprimi lo O main permite a compress o mas desencoraja mover o valor para fora da tabela principal Os itens de dado com este m todo de armazenamento ainda podem ser movidos para fora da tabela principal se n o houver outro meio para fazer o ajuste da linha mas ser mantido na tabela principal
212. e um espa o de nomes cont m objetos nomeados tabelas tipos de dado fun es e operadores cujos nomes podem duplicar os nomes de outros objetos existentes em outros esquemas Os objetos CREATE SCHEMA nomeados s o acessados qualificando se seus nomes usando o nome do esquema como prefixo ou definindo um caminho de procura que inclua o s esquema s desejado s Os objetos n o qualificados s o criados no esquema corrente quele na frente do caminho de procura consulte CURRENT SCHEMA Opcionalmente o comando CREATE SCHEMA pode incluir subcomandos para criar objetos no novo esquema Estes subcomandos s o tratados essencialmente da mesma forma que os outros comandos executados ap s a cria o do esquema exceto que se a cl usula AUTHORIZATION for usada todos os objetos criados pertencer o a este usu rio Notas Para criar um esquema o usu rio deve possuir o privil gio CREATE no banco de dados corrente E claro que os superusu rios n o s o afetados por esta exig ncia Use o comando DROP SCHEMA para remover um esquema Exemplos Criar um esquema CREATE SCHEMA meu esquema Criar um esquema para o usu rio antonio o esquema tamb m se chamar antonio CREATE SCHEMA AUTHORIZATION antonio Criar um esquema e criar uma tabela e uma vis o nele CREATE SCHEMA hollywood EATE TABLE filmes titulo text lancamento date premios
213. ebendo nenhum argumento e com retorno do tipo trigger argumentos Uma rela o opcional de argumentos separados por v rgula a serem fornecidos fun o junto com os dados usuais dos gatilhos como os conte dos novo e antigo das tuplas quando o gatilho for disparado Os argumentos s o constantes literais na forma de cadeias de caracteres Nomes simples e constantes num ricas podem ser escritas tamb m mas ser o convertidos em cadeias de caracteres Sa das CREATE TRIGGER Mensagem retornada se o gatilho for criado com sucesso CREATE TRIGGER Descri o O comando CREATE TRIGGER introduz um novo gatilho no banco de dados atual O gatilho fica associado com a rela o tabela e executa a fun o especificada fun o O gatilho pode ser especificado para disparar antes BEFORE da opera o ser realizada na tupla antes das restri es serem verificadas e O INSERT UPDATE OU DELETE serem efetuados ou ap s AFTER a opera o ser realizada ou seja ap s as restri es serem verificadas e O INSERT UPDATE OU DELETE ter completado Se o gatilho disparar antes do evento o gatilho pode evitar a opera o para a tupla atual ou modificar a tupla sendo inserida para as opera es de INSERT e UPDATE somente Se o gatilho disparar ap s o evento todas as modifica es incluindo a ltima inser o atualiza o ou exclus o s o vis veis para o gatilho
214. eco RESTRICT Para mudar o nome de uma coluna existente ALTER TABLE distribuidores RENAME COLUMN endereco TO cidade Para mudar o nome de uma tabela existente ALTER TABLE distribuidores RENAME TO fornecedores Para adicionar uma restri o NOT NULL a uma coluna ALTER TABLE distribuidores ALTER COLUMN logradouro SET NOT NULL Para remover a restri o NOT NULL da coluna ALTER TABLE distribuidores ALTER COLUMN logradouro DROP NOT NULL ALTER TABLE Para adicionar uma restri o de verifica o check a uma tabela ALTER TABLE distribuidores ADD CONSTRAINT chk cep CHECK char length cod cep 8 Para remover uma restri o de verifica o de uma tabela e de todas as suas descendentes ALTER TABLE distribuidores DROP CONSTRAINT chk cep Para adicionar uma restri o de chave estrangeira a uma tabela ALTER TABLE distribuidores ADD CONSTRAINT fk dist FOREIGN KEY endereco REFERENCES enderecos Para adicionar uma restri o de unicidade multi coluna tabela ALTER TABLE distribuidores ADD CONSTRAINT unq dist id cod cep UNIQUE dist id cod cep Para adicionar uma restri o de chave prim ria a uma tabela com o nome gerado automaticamente observando se que a tabela somente pode possuir uma nica chave prim ria ALTER TABLE distr
215. efer ncia II Aplicativos para a esta o cliente do PostgreSQL 75 initdb Nome initdl cria um novo agrupamento de bancos de dados do PostgreSQL Sinopse initdb options pgdata D diret rio Descri o O initdb cria um novo agrupamento de bancos de dados do PostgreSQL ou sistema de bancos de dados Um agrupamento de bancos de dados uma cole o de bancos de dados que s o gerenciados por uma nica inst ncia do servidor Criar um sistema de banco de dados consiste em criar os diret rios onde os dados dos bancos de dados v o residir gerar as tabelas do cat logo compartilhado tabelas que pertencem ao agrupamento como um todo e n o a algum banco de dados em particular e criar o banco de dados templat e1 Quando um novo banco de dados criado tudo que existe no banco de dados template1 copiado Este banco de dados cont m tabelas do cat logo preenchidas com dados como os tipos de dado primitivos O initdb inicializa a regi o e a codifica o do conjunto de caracteres padr o do agrupamento de banco de dados Algumas categorias de regi o s o estabelecidas para toda a exist ncia do agrupamento portanto muito importante fazer a escolha correta ao se executar o initdb Outras categorias de regi o podem ser mudadas mais tarde quando o servidor iniciado O init db escreve estas defini es de regi o no arquivo de configura o postgresgl conf tornando as padr o mas podem ser mudadas editando se
216. eft on device Se esta mensagem for recebida deve se executar o comando ipcclean e em seguida tentar iniciar o post master novamente Se ainda assim n o funcionar provavelmente ser necess rio configurar o n cleo kernel para a mem ria compartilhada e os sem foros conforme descrito nas notas de instala o Se forem execu tadas v rias inst ncias do postmaster em um nico hospedeiro ou se o n cleo tiver mem ria compartilhada e ou limites de sem foro particularmente pequenos provavelmente ser necess rio reconfigurar o n cleo para aumentar os par metros de mem ria compartilhada ou de sem foros Dica Pode se conseguir adiar a reconfigura o do n cleo diminuindo se B para reduzir o consumo de mem ria compartilhada do PostgreSQL e ou reduzindo se N para reduzir o consumo de sem foros StreamServerPort cannot bind to port Se esta mensagem for vista deve se ter certeza de que n o h nenhum outro processo postmaster executando no mesmo computador usando o mesmo n mero de porta A maneira mais f cil de se ver usando o comando ps ax grep postmaster ou ps e grep postmaster dependendo do sistema operacional Havendo certeza de que nenhum outro processo postmaster est executando e o erro continuar acontecendo deve se tentar especificar uma porta diferente usando a op o p poss vel acontecer este erro se o post master for terminado e imediatamente reiniciado usando a mesma porta neste caso dev
217. eia de caracteres nula WITH OIDS COPY BINARY tabela TO nome do arquivo ERS USING DELIMIT stdout delimitador WITH NULL AS cadeia de caracteres nula 002 No I L 003 A No No No 001 NO 377 No L Z 003 CREATE AGGREGATE Nome CREATE AGGREGATE cria uma fun o de agrega o Sinopse CREATE AGGREGATE nome BASETYPE tipo dado entrada SFUNC func trans estado STYPE tipo dado estado FINALFUNC func final INITCOND cond inicial 1 Entradas name O nome opcionalmente qualificado pelo esquema da fun o de agrega o a ser criada tipo dado entrada O tipo do dado de entrada sobre o qual esta fun o de agrega o opera Pode ser especificado como ANY para uma fun o de agrega o que n o examina seus valores de entrada um exemplo a fun o count func trans estado O nome da fun o de transi o de estado a ser chamada para cada valor dos dados da entrada Normalmente esta uma fun o com dois argumentos o primeiro sendo do tipo tipo dado estado e o segundo do tipo tipo dado entrada Outra possibilidade para uma fun o de agrega o que n o examina seus valores de entrada a fun o possuir apenas um argumento do tipo tipo dado estado Em qualquer um dos casos a fun o deve retornar um valor do tipo tipo dado estado Esta fun o
218. emp CLOSE cur emp Compatibilidade SQL92 O comando cLOS E totalmente compat vel com o SQL92 CLOSE CLUSTER Nome CLUSTER agrupa uma tabela de acordo com um ndice Sinopse CLUSTER nome do ndice ON nome da tabela Entradas nome do ndice O nome de um ndice nome da tabela O nome opcionalmente qualificado pelo esquema de uma tabela Sa das CLUSTER O agrupamento foi realizado com sucesso Descri o O comando CLUSTER instrui o PostgreSQL para agrupar a tabela especificada por nome da tabela baseado no ndice especificado por nome do ndice necess rio que o ndice tenha sido criado anteriormente na tabela nome da tabela Quando a tabela agrupada ela fisicamente reordenada baseado na informa o do ndice O agrupamento uma opera o nica nas pr ximas vezes em que a tabela for atualizada as modifica es n o ser o agrupadas ou seja nenhuma tentativa feita para manter as tuplas novas ou atualizadas na ordem do ndice Se for desejado a tabela pode ser reagrupada periodicamente executando se este comando novamente Notas No caso de se estar acessando uma nica linha da tabela aleatoriamente a ordem f sica dos dados da tabela n o importante Entretanto havendo uma tend ncia para acessar alguns dados mais do que outros se existir um ndice que agrupa estes dados haver benef cio se o comando CLUSTER for utilizado O
219. ente pode ser executado pelo dono do banco de dados normalmente o usu rio que o criou O comando DROP DATABASE n o pode ser desfeito Use com prud ncia Notas Este comando n o pode ser executado enquanto conectado ao banco de dados de destino Portanto mais conve niente utilizar o script dropdb que uma envolt ria em torno deste comando DROP DATABASE Consulte o comando CREATE DATABASE para obter informa es sobre como criar bancos de dados Compatibilidade SQL92 O comando DROP DATABASE uma extens o do PostgreSQL linguagem N o existe este comando no SQL92 DROP DOMAIN Nome DROP DOMAIN remove um dom nio definido pelo usu rio Sinopse DROP DOMAIN nome do dom nio CASCADE RESTRICT Entradas nome do dom nio O nome opcionalmente qualificado pelo esquema de um dom nio existente CASCADE Remove automaticamente os objetos que dependem do dom nio como colunas de tabelas o ESTRICT Recusa excluir o dom nio se existirem objetos dependentes Este o padr o Sa das DROP DOMAIN Mensagem retornada se o comando for executado com sucesso ERROR RemoveDomain type nome do dom nio does not exist Esta mensagem ocorre quando o dom nio especificado ou tipo n o encontrado Descri o O comando DROP DOMAIN remove um dom nio do usu rio dos cat logos do sistema Somente o dono pode remover o dom nio Exemplos Para remover o d
220. ente que o banco de dados pode conter dados n o consistentes devido exist ncia de transa es parcialmente efetivadas Deve ser feita imediatamente uma c pia de seguran a executar o initdb e recarregar os dados Ap s a recarga as inconsist ncias devem ser encontradas e corrigidas conforme necess rio Este utilit rio somente pode ser executado pelo usu rio que instalou o servidor porque requer acesso de leitura grava o nodiret rio de dados Por motivo de seguran a o diret rio de dados deve ser especificado na linha de comando O pg resetx1og n o utiliza a vari vel de ambiente PGDATA Se o pg resetxlog informar que n o est conseguindo determinar os dados v lidos para o pg control pode ser for ado a prosseguir utilizando a chave f for ar Neste caso valores plaus veis ser o utilizados para os dados que est o faltando Deve se esperar que a maioria dos campos sejam determinados mas ajuda manual pode ser necess ria para os campos pr ximo OID pr ximo ID de transa o endere o inicial do WAL e regi o do banco de dados Os tr s primeiros deles podem ser definidos usando as chaves discutidas abaixo O pr prio ambiente do pg resetxlog a fonte destas informa es para os campos regionais deve se cuidar para que LANG e as demais vari veis de ambiente an logas correspondam s que estavam presentes quando o initdb foi executado Se n o for poss vel determinar o valor correto para todos estes campos o f ainda po
221. er em paralelo a uma transa o que obteve este tipo de bloqueio Nota Este modo n o obtido automaticamente por nenhum comando do PostgreSQL ACCESS EXCLUSIVE MODE Conflita com todos os outros modos de bloqueio Este modo garante que a transa o que o obteve a nica com qualquer forma com acesso tabela Nota Obtido pelos comandos ALTER TABLE DROP TABLE VACUUM FULL Este tamb m o modo de bloqueio padr o do comando LOCK TABLE quando o modo n o especificado explicitamente LOCK Sa das LOCK TABLI Ti Mensagem retornada se o bloqueio for obtido com sucesso ERROR nome Table does not exist Mensagem retornada se nome n o existir Descri o O comando LOCK TABLE obt m um bloqueio no n vel de tabela aguardando se for necess rio qualquer bloqueio conflitante ser liberado Uma vez obtido o bloqueio mantido pelo restante da transa o corrente N o existe o comando UNLOCK TABLE os bloqueios s o sempre liberados no final da transa o Ao obter automaticamente um bloqueio para os comandos que fazem refer ncia a tabelas o PostgreSQL sem pre utiliza o modo de bloqueio menos restritivo poss vel O comando LOCK TABLE usado nos casos onde necess rio um modo de bloqueio mais restritivo Por exemplo supondo se que um aplicativo processe uma transa o no n vel de isolamento READ COMMIT TED e precise garantir que os dados da tabela permane am os mesmos durante a t
222. erador op ord dir Se este operador pode suportar uma jun o por mesclagem o operador maior que que ordena o tipo de dado do lado direito deste operador op menor que Se este operador pode suportar uma jun o por mesclagem o operador menor que que compara os tipos de dado de entrada deste operador op maior que Se este operador pode suportar uma jun o por mesclagem o operador maior que que compara os tipos de dado de entrada deste operador Sa das CREATE OPERATOR Mensagem retornada se o operador for criado com sucesso Descri o O comando CREATE OPERATOR define um novo operador nome O usu rio que define um operador se torna seu dono Se o nome do esquema for fornecido ent o o operador ser criado no esquema especificado sen o ser criado no esquema corrente aquele na frente do caminho de procura consulte CURRENT SCHEMA Dois operadores no mesmo esquema podem ter o mesmo nome se operarem sobre tipos de dado diferentes o que chamado de sobrecarga overloading O sistema tenta pegar o operador apropriado baseado nos tipos de dado da entrada quando existe ambigiiidade O operador nome uma sequ ncia de at NAMEDATALEN 63 por padr o caracteres da seguinte lista lt gt D 0H WN amp I IS Existem algumas restri es na escolha do nome O n o pode ser definido como um operador de um nico caractere embora possa fazer parte do nome de um ope
223. es Este o comportamento padr o Sa das ALTER TABLE Mensagem retornada se o nome da coluna ou da tabela for alterado com sucesso ERROR Mensagem retornada se a tabela ou a coluna n o existir Descri o O comando ALTER TABLE altera a defini o de uma tabela existente Existem v rias formas alternativas ADD COLUMN Esta forma adiciona uma nova coluna tabela usando a mesma sintaxe do comando CREATE TABLE DROP COLUMN Esta forma exclui uma coluna da tabela Note que os ndices e as restri es da tabela que referenciam a coluna tamb m ser o automaticamente exclu dos Ser necess rio especificar CASCADE se algum objeto fora da tabela depender da coluna por exemplo chaves estrangeiras vis es etc SET DROP DEFAULT Estas formas definem ou removem o valor padr o para a coluna Note que o valor padr o somente se aplica aos pr ximos comandos INSERT as linhas existentes na tabela n o s o modificadas Os valores padr o tamb m podem ser criados para as vis es e neste caso s o inseridos pelo comando INS ON INSERT da vis o ser aplicada ERT antes da regra ALTER TABLE SET DROP NOT NULL Estas formas mudam a defini o da coluna para permitir valores nulos ou para rejeitar valores nulos A forma SET NOT NULL somente pode ser usada quando n o existem valores nulos na coluna SET STATISTICS Esta forma permite controlar a coleta de estat sticas para o
224. es dentro da transa o corrente Portanto se este comando for executado fora de um bloco de transa o expl cito tal como um que comece por BEGIN parecer que n o produziu nenhum efeito Se for desejado mudar o comportamento das restri es sem haver a necessidade de executar o comando sET CONSTRAINTS em todas as transa es deve ser especificado INITIALLY DEFERRED OU INITIALLY IMMEDIATE quando a restri o for criada Quando se muda o modo da restri o para que se torne IMMEDIATE o novo modo de restri o produz efeito retroativo todos os dados modificados que deveriam ser verificados no final da transa o ao se usar DEFERRED s o verificados durante a execu o do comando SET CONSTRAINTS Na hora da cria o sempre dada restri o uma destas tr s caracter sticas INITIALLY DEFERRED inicial mente postergada INITIALLY IMMEDIATE DEFERRABLE inicialmente imediata posterg vel ou INITIALLY IMMEDIATE NOT DEFERRABLE inicialmente imediata n o posterg vel A terceira classe n o afetada pelo comando SET CONSTRAINTS Atualmente somente as restri es de chave estrangeira s o afetadas por este comando As restri es de verifica o check e de unicidade s o sempre inicialmente imediata n o posterg vel Compatibilidade SQL92 SQL99 SET CONSTRAINTS definida no SQL92 e no SQL99 A implementa o no PostgreSQ
225. especificado atrav s da op o o se este comando for utilizado por um usu rio com os privil gios adequados O createdb um script envolt rio que usa o comando SQL CREATE DATABASE atrav s do terminal interativo do PostgreSQL psql Portanto n o existe nada em especial sobre criar bancos de dados desta ou daquela maneira significando que o psql deve ser encontrado pelo script e que o servidor de banco de dados deve estar executando na m quina de destino Tamb m se aplicam os padr es definidos e as vari veis de ambiente dispon veis para o psql e para a biblioteca cliente libpq Op es O createdb aceita os seguintes argumentos de linha de comando nome bd Especifica o nome do banco de dados a ser criado O nome deve ser nico entre todos os bancos de dados do PostgreSQL desta instala o O padr o criar o banco de dados com o mesmo nome do usu rio atual do sistema operacional descri o Especifica opcionalmente um coment rio a ser associado com o banco de dados criado D diret rio de dados location diret rio de dados Especifica o local alternativo de banco de dados Consulte tamb m o aplicativo initlocation e echo Exibe os comandos que o createdb gera e envia para o servidor E codifica o encoding codifica o Especifica o esquema de codifica o de caracteres a ser usado neste banco de dados O nome do usu rio owner nome do usu rio Especifica o usu r
226. essador C I caminho de inclus o Especifica um caminho de inclus o adicional utilizado para encontrar arquivos especificados atrav s do EXEC SQL INCLUDE Por padr o os seguintes o diret rio atual usr local include o caminho de inclus o que foi definido na hora da compila o do PostgreSQL por padr o usr local pgsql include usr include nesta ordem o arquivo de sa da Especifica que o ecpg deve escrever toda a sua sa da no arquivo de sa da Ativa a auto efetiva o auto commit das transa es Neste modo cada comando automaticamente efeti vado a menos que esteja dentro de um bloco de transa o expl cito No modo padr o os comandos s s o efetivados quando o EXEC SQL COMMIT executado 27 ecpg Exibe informa es adicionais incluindo a vers o e o caminho de inclus o help Exibe um breve sum rio da utiliza o do aplicativo e depois termina version Exibe a vers o e depois termina Notas Ao compilar arquivos com o c digo C pr processado o compilador necessita encontrar os arquivos de cabe alho do ECPG no diret rio de inclus o do PostgreSQL Portanto necess rio usar a op o I ao chamar o compilador por exemplo I1 usr local pgsql include Os programas escritos em C com SQL embutido necessitam da biblioteca 1ibecpg para a liga o Pode ser usado por exemplo os sinalizadores L usr local pgsgl lib lecpg Os diret rios apro
227. estore reconhece o formato automaticamente Se for especificado poder ser um dos seguintes O arquivo de exporta o est no formato tar Este formato de arquivo de exporta o permite reordenar e ou excluir elementos do esquema durante a importa o Tamb m permite limitar quais dados s o carregados durante a importa o O arquivo de exporta o est no formato personalizado do pg dump Este o formato mais flex vel porque permite a reordena o da importa o dos dados e dos elementos do esquema Este formato tamb m comprimido por padr o i ignore version Ignora a verifica o da vers o do banco de dados I nome do ndice index nome do ndice Restaura apenas a defini o do ndice chamado nome do ndice 1 s List Lista o conte do do arquivo de exporta o A sa da deste comando pode ser usada com a op o L para restringir e reordenar os itens que v o ser restaurados L arquivo_da_listagem use list arquivo_da_listagem Restaura apenas os elementos presentes no arquivo da listagem e na ordem em que aparecem neste arquivo As linhas podem ser movidas e tamb m podem virar coment rio colocando se um no seu in cio 42 N pg restore orig order Z0 Restaura os itens na ordem original de exporta o Por padr o o pg_dump ir exportar os itens em uma ordem conveniente para o pg_dump e depois salvar o arquivo de exporta o em uma ordem de OID mo
228. etos existentes Consulte tamb m o comando GRANT para obter informa es sobre o formato Exemplos Revogar o privil gio de inser o na tabela filmes concedido para todos os usu rios REVOKE INS ERT ON filmes FROM PUBLIC Revogar todos os privil gios concedidos ao usu rio manuel sobre a vis o vis tipos REVOKE ALL PRIVILEGES ON vis tipos FROM manuel Compatibilidade SQL92 As notas sobre compatibilidade presentes no comando GRANT se aplicam de forma an loga ao comando Ri O sum rio da sintaxe REVOKE EVOKE REVOKE GRANT OPTION FOR SELECT INSERT UPDATE DELE ENCES ON objeto coluna 1 1 FROM PUBLIC nome do usu rio RESTRICT CASCADE Se userl conceder um privil gio WITH GRANT OPTION para o user2 e user2 conced lo para o user3 ent o userl pode revogar este privil gio em cascata utilizando a palavra chave CASCADE Se userl conceder um privil gio WITH GRANT OPTION para o user2 e user conced lo ao user3 ent o se userl tentar revogar este privil gio especificando a palavra chave RESTRICT o comando ir falhar Consulte tamb m GRANT ROLLBACK Nome ROLLBACK aborta a transa o corrente Sinopse ROLLBACK WORK TRANSACTION Entradas Nenhuma Sa das ROLLBACK Mensagem retornada se o comando for executado com sucesso WARNING
229. ez Sem isto poss vel a ocorr ncia de um impasase deadlock duas transa es podem obter um bloqueio no modo SHARE e depois ficarem impossibilitadas de obter o bloqueio no modo ROW EXCLUSIVE para realizar as modifica es Observe que os bloqueios obtidos pela pr pria transa o nunca entram em conflito portanto a transa o pode obter o modo ROW EXCLUSIVE ap s obter o modo SHARE mas n o se outra transa o estiver com o modo SHARE Duas regras gerais devem ser seguidas para evitar a condi o de impasse As transa es t m que obter o bloqueio dos mesmos objetos na mesma ordem LOCK Por exemplo se um aplicativo atualiza a linha R1 e depois atualiza a linha R2 na mesma transa o ent o um segundo aplicativo n o deve atualizar a linha R2 se for atualizar a linha R1 em seguida na mesma transa o Em vez disto o segundo aplicativo deve atualizar as linha R1 e R2 na mesma ordem do primeiro aplicativo e Se diversos modos de bloqueio est o envolvidos para um mesmo objeto ent o as transa es devem sempre obter primeiro o modo mais restritivo Um exemplo desta regra foi dado anteriormente ao se discutir o uso do modo SHARE ROW EXCLUSIVE em vez do modo SHARE O PostgreSQL detecta impasses deadlocks e desfaz pelo menos uma das transa es em espera para resolver o impasse Se na pr tica n o for poss vel codificar um aplicativo que siga estritamente as regras mostradas acima uma solu o alternat
230. fica o em particular Al m disso as convers es que s o marcadas como DEFAULT podem ser usadas para fazer a convers o autom tica de codifica o entre o cliente e o servidor Para esta finalidade duas convers es de codifica o devem existir de A para B e de B para A Para poder criar uma convers o deve se possuir o direito de executar a fun o e o direito de criar no esquema de destino Par metros DEFAULT A cl usula DEFAULT indica que esta a convers o padr o para o caso destas codifica es de origem e de destino em particular Deve existir apenas uma convers o padr o para um determinado par de codifica es em um esquema nome da convers o O nome da convers o O nome da convers o pode ser qualificado pelo esquema Se n o for a convers o criada no esquema corrente O nome da convers o deve ser nico no esquema codifica o de origem O nome da codifica o de origem codifica o de destino O nome da codifica o de destino nome da fun o A fun o utilizada para realizar a convers o O nome da fun o pode ser qualificado pelo esquema Se n o for a fun o procurada no caminho A fun o deve possuir a seguinte assinatura funcao de conversao INTEGER identificador da codifica o de origem INTEGER identificador da codifica o de destino CSTRING cadeia de caracteres de origem cadeia de caracteres C terminada po
231. g restore restaura um banco de dados do PostgreSQL a partir de um arquivo gerado pelo pg dump Sinopse pg restore op es Descri o O pg restore um utilit rio para restaurar um banco de dados do PostgreSQL a partir de um arquivo gerado pelo pg dump em um dos formatos n o texto puro S o executados os comandos necess rios para criar novamente todos os tipos fun es tabelas ndices agrega es e operadores definidos pelo usu rio assim como os dados das tabelas Os arquivos de exporta o cont m informa es para o pg restore reconstruir o banco de dados mas tamb m permitem ao pg restore selecionar o que deve ser restaurado ou mesmo reordenar a restaurara o dos itens Os arquivos de exporta o s o projetados para serem port veis entre arquiteturas O pg restore pode operar de dois modos Se um nome de banco de dados for especificado o arquivo de exporta o restaurado diretamente no banco de dados Sen o um script contendo os comandos SQL necess rios para reconstruir o banco de dados criado e escrito em um arquivo ou na sa da padr o semelhante aos scripts criados pelo pg dump no formato texto puro Algumas das op es que controlam a cria o do script s o portanto an logas s op es do pg dump Obviamente o pg restore n o pode restaurar informa es que n o estejam presentes no arquivo de exporta o por exemplo se o arquivo de exporta o foi gerado usando a op o e
232. gatilho existente ALT ER TRIGG Compatibilidade SQL92 A cl usula para mudar o nome dos gatilhos uma extens o do PostgreSQL ao SQL92 ER emp stamp ON emp RE NAME TO emp track chgs ALTER USER Nome ALTER USER altera a conta de um usu rio do banco de dados Sinopse ALTER USER nome do usu rio WITH op o 1 onde op o pode ser ENCRYPTED UNENCRYPTED PASSWORD senha CREATEDB NOCREATEDB CREATEUSER NOCREATEUSER VALID UNTIL data hora ALTER USER nome do usu rio SET vari vel TO valor DEFAULT ALTER USER nome do usu rio RESET vari vel Descri o O comando ALTER USER utilizado para mudar os atributos da conta de um usu rio do PostgreSQL Os atributos n o mencionados no comando permanecem com os seus valores inalterados A primeira forma deste comando mostrada na sinopse muda certos privil gios globais do usu rio e defini es de autentica o Veja abaixo para obter detalhes Somente um superusu rio do banco de dados pode alterar os privil gios e a expira o da senha com este comando Os usu rios comuns somente podem alterar as suas pr prias senhas A segunda e a terceira formas mudam o valor padr o da vari vel de configura o indicada para a sess o do usu rio Sempre que o usu rio inici
233. gem definida pelo usu rio o acesso aos dados realizado na forma espec fica da linguagem e O PostgreSQL somente possui gatilhos no n vel de linha n o possuindo gatilhos no n vel de declara o e O PostgreSQL somente permite a execu o de procedimentos armazenados para a a o do gatilho O SQL99 permite a execu o de v rios outros comandos SQL como o CREATE TABLE para a a o de um gatilho Esta limita o n o dif cil de ser contornada criando se um procedimento armazenado que execute estes comandos O SQL99 especifica que m ltiplos gatilhos devem ser disparados na ordem da data de cria o O PostgreSQL usa a ordem dos nomes que foi julgada mais conveniente para se trabalhar Consulte tamb m CREATE FUNCTION ALTER TRIGGER DROP TRIGGER Guia do Programador do PostgreSQL CREATE TYPE Nome CREATE TYPE cria um tipo de dado Sinopse CREATE TYPE nome do tipo INPUT input function OUTPUT fun o de sa da INTERNALLENGTH comprimento interno VARIABLE DEFAULT padr o ELEMENT elemento DELIMITER delimitador PASSEDBYVALUE ALIGNMENT alinhamento STORAGE armazenamento CREATE TYPE nome do tipo AS nome da coluna tipo de dado 1 Entradas nome do tipo O nome opcionalmente qualificado pelo esquema d
234. has lidas no modo interativo s o salvas na lista de hist rico Nota Esta funcionalidade foi plagiada do bash HISTSIZ CJ O n mero de comandos a serem armazenados no hist rico de comandos O valor padr o 500 Nota Esta funcionalidade foi plagiada do bash 62 psgl HOST O hospedeiro do servidor de banco de dados ao qual se est conectado E definida toda vez que se conecta a um banco de dados inclusive na inicializa o mas a defini o n o pode ser removida IGNOREEOF Se n o estiver definida o envio de um caractere EOF usualmente Control D para uma sess o interativa do psql termina o aplicativo Se estiver definida com um valor num rico este n mero de caracteres EOF s o ignorados antes que o aplicativo termine Se a vari vel estiver definida mas n o tiver um valor num rico o padr o 10 Nota Esta funcionalidade foi plagiada do bash LASTOID O valor do ltimo oid afetado retornado por um comando INSERT ou lo insert Esta vari vel somente garantida como v lida at que o resultado do pr ximo comando SQL tenha sido mostrado LO TRANSACTION Se for usada a interface de objeto grande do PostgreSQL para armazenar os dados que n o cabem em uma tupla todas as opera es devem estar contidas em um bloco de transa o Consulte a documenta o da inter face de objetos grandes para obter mais informa es Como o psql n o tem maneira de saber se existe uma transa
235. i vel de ambiente PGHOST se estiver definida sen o tentada uma conex o pelo soquete do dom nio Unix pporta O n mero da porta na qual o servidor est aguardando as conex es O padr o obtido da vari vel de ambiente PGPORT se estiver definida ou do padr o da compila o U nome do usu rio Nome do usu rio para se conectar W For a a solicita o da senha Deve acontecer automaticamente se o servidor requerer autentica o por senha As op es longas somente est o dispon veis em algumas plataformas 39 pg dumpall Ambiente PGHOST PGPORT PGUSER Par metros padr o de conex o Notas Como o pg dumpall chama o pg dump internamente algumas mensagens de diagn sticos se referem ao pg dump O pg dumpall necessita se conectar v rias vezes ao servidor PostgreSQL Se estiver configurado autentica o por senha a senha ser solicitada em cada uma destas vezes Neste caso conveniente criar um arquivo de senha Exemplos Para exportar todos bancos de dados pg dumpall gt db out Para importar estes bancos de dados pode ser usado por exemplo psql f db out templatel N o importante em qual banco de dados se conectar porque o script criado pelo pg dumpall cont m os coman dos apropriados para criar e conectar aos bancos de dados salvos Consulte tamb m pg dump psql Check Veja tamb m detalhes sobre as poss veis condi es de erro 40 pg restore Nome p
236. i preparada com sucesso Descri o O comando PREPARE cria uma consulta preparada Uma consulta preparada um objeto no lado do servidor que pode ser usado para otimizar o desempenho Quando o comando PRI EPARE executado a consulta preparada analisada reescrita e planejada Quando um comando ExECUTEposterior emitido a consulta preparada necessita apenas ser executada Portanto os est gios de an lise reescrita e planejamento s o realizados apenas uma vez e n o todas as vezes que a consulta for executada As consultas preparadas podem receber par metros valores que s o substitu dos na consulta quando executada Para especificar os par metros da consulta preparada deve se incluir uma rela o de tipos de dado no comando PR EPAR E Na pr pria consulta os par metros podem ser referenciados atrav s da sua posi o utilizando 1 2 ECUT E consulte o etc Ao executar a consulta especifica se os valores reais dos par metros no comando Ex comando EXECUTE para obter mais informa es PREPARE As consultas preparadas s o armazenadas localmente no processo servidor corrente e somente v o existir en quanto durar a sess o do banco de dados Quando o cliente termina a sess o a consulta preparada esquecida sendo portanto necess rio recriar a consulta antes de us la novamente Significa tamb m que uma nica con sulta
237. ibuidores ADD PRIMARY KEY dist id Compatibilidade SQL92 A forma ADD COLUMN est em conformidade a n o ser por n o suportar valor padr o e NOT NULL conforme foi explicado anteriormente A forma ALTER COLUMN est em conformidade total As cl usulas para mudar os nomes das tabelas ndices e sequ ncias s o extens es do PostgreSQL ao SQL92 ALTER TRIGGER Nome ALTER TRIGGER altera a defini o de um gatilho Sinopse ALTER TRIGGI RENAME Entradas gatilho ER gatilho ON tabela TO novo nome O nome do gatilho que est sendo alterado tabela O nome da tabela onde o gatilho atua novo nome O novo nome para o gatilho existente Sa das ALTER TRIGGER Mensagem retornada se o nome do gatilho for alterado com sucesso ERROR Mensagem retornada se o gatilho n o existir ou se o nome novo for igual ao nome de outro gatilho existente na tabela Descri o O comando ALTER TRIGGER muda a defini o de um gatilho existente A cl usula RE de um determinado gatilho de uma tabela mude sem mudar a defini o do gatilho NAM E faz com que o nome necess rio ser o dono da tabela em que o gatilho atua para poder mudar as suas propriedades Notas ALTER TRIGGER Consulte o comando CREATE TRIGGER para obter uma descri o detalhada dos argumentos v lidos Usage Para mudar o nome de um
238. ido criada como uma tabela tempor ria pela dura o do comando SELECT Um ali s tamb m pode ser usado Se um ali s for fornecido uma rela o de ali s de coluna tamb m pode ser escrito para fornecer nomes substitutos para uma ou mais colunas da fun o de tabela Se a fun o de tabela for definida retornando o tipo de dado recorda deve estar presente um ali s ou a palavra chave AS seguida por uma lista de defini o de coluna na forma nome de colunatipo de dado A lista de defini o de coluna deve corresponder ao n mero e tipos de dado das colunas retornadas pela fun o tipo de jun o Um entre INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN CROSS JOIN Para os tipos de jun o INNER e OUTER exatamente um entre NATURAL ON condi o de jun o e USING lista de coluna de jun o deve estar presente Para o CROSS JOIN nenhum destes itens pode aparecer condi o de jun o Uma condi o de qualifica o similar condi o WHERE exceto que somente se aplica aos dois itens sendo unidos por esta cl usula JOIN SELECT lista de coluna de jun o A condi o USING lista de colunas a b uma forma abreviada da condi o ON tabela esquerda a tabela direita a AND tabela esquerda b tabela direita b Sa das Linhas O conjunto completo das linhas resultantes da especifica o da consulta contador A quantidade de linhas re
239. ificado n o existe ERROR RemoveOperator left unary operator opererador taking tipo esquerdo does not exist Esta mensagem ocorre quando o operador un rio esquerdo especificado n o existe DROP OPERATOR ERROR RemoveOperator right unary operator operador taking tipo direito does not exist Esta mensagem ocorre quando o operador un rio direito especificado n o existe Descri o O comando DROP OPERATOR remove um operador existente do banco de dados Para executar este comando necess rio ser o dono do operador O tipo do lado esquerdo ou direito de um operador un rio esquerdo ou direito respectivamente deve ser especi ficado como NONE Notas O comando DROP OPERATOR uma extens o da linguagem do PostgreSQL Consulte o comando CREATE OPERATOR para obter informa es sobre como criar operadores Utiliza o Remover o operador de pot ncia a n para int4 DROP OPERATOR int4 int4 Remover o operador de nega o un rio esquerdo b para booleano DROP OPERATOR none bool Remover o operador de fatorial un rio direito i para int DROP OPERATOR int4 none Compatibilidade SQL92 N o existe o comando DROP OPERATOR no SQL92 DROP OPERATOR CLASS Nome DROP OPERATOR CLASS remove uma classe de operadores definida pelo usu rio Sinopse DROP OPERATOR CLASS nome USING m todo de acesso CASCADE RESTRICT Ent
240. inguagem C para o servidor libdir Exibe a localiza o das bibliotecas de c digo objeto pkglibdir Exibe a localiza o dos m dulos carreg veis dinamicamente ou onde o servidor deve procur los Tamb m podem estar instalados neste diret rio outros arquivos de dados dependentes da arquitetura configure Exibe as op es que foram passadas para o script configure quando o PostgreSQL foi configurado para ser gerado Pode ser utilizado para reproduzir uma configura o id ntica ou para descobrir com quais op es o pacote bin rio foi gerado Entretanto note que os pacotes bin rios geralmente cont m modifica es espec ficas da distribui o version Exibe a vers o do PostgreSQL e termina Se mais de uma op o exceto version for fornecida a informa o exibida na mesma ordem uma por linha 29 pg_config Notas A op o includedir server nova no PostgreSQL 7 2 Nas vers es anteriores os arquivos de inclus o do servidor estavam instalados no mesmo local dos cabe alhos dos clientes que podia ser consultado pelo includedir Para tratar os dois casos deve se tentar primeiro a nova op o e testar o status da sa da para verificar se foi executado com sucesso Nas vers es anteriores ao PostgreSQL 7 1 antes do comando pg config existir n o existia um m todo equiva lente para encontrar as informa es de configura o Hist rico O utilit rio pg config apareceu
241. inhas que ser o real mente impressas Por esta raz o o psql pode parecer n o muito discriminativo sobre quando usar o paginador Ilustra es mostrando como parecem estes formatos diferentes podem ser vistas na se o Exemplos Dica Existem v rios comandos abreviados para o Ypset Veja Na NC NH NE NT O Nx Nota errado chamar o Ypset sem argumentos No futuro esta chamada dever mostrar o status corrente de todas as op es de impress o Na Sair do programa psql 59 psql qecho texto Este comando id ntico ao echo exceto que toda a sa da escrita no canal de sa da de consulta definido pelo o NE Restaura limpa o buffer de comando is nome do arquivo Exibe ou salva o hist rico da linha de comando em nome do arquivo Se nome do arquivo for omitido o hist rico enviado para a sa da padr o Esta op o somente estar dispon vel se o psql estiver configurado para usar a biblioteca de hist rico GNU Nota Na vers o corrente n o mais necess rio salvar o hist rico dos comandos porque isto feito automaticamente ao t rmino do programa O hist rico tamb m carregado automaticamente toda vez que o psql inicia set nome valor Define a vari vel interna nome com o valor ou se mais de um valor for fornecido com a concatena o de todos eles Se o segundo valor n o for fornecido a vari vel definida sem valor Para remover a defini o da vari vel
242. io que ser o dono do banco de dados q quiet N o exibe resposta T gabarito template gabarito Especifica o banco de dados de gabarito a partir do qual este banco de dados ser gerado createdb As op es D E O e T correspondem s op es do comando CREATE DATABASE subjacente consulte este comando para obter mais informa es sobre estas op es O createdb tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o h hospedeiro host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p porta Port porta Especifica a porta Internet TCP IP ou o soquete do dom nio Unix local onde o servidor est aguardando as conex es U nome do usu rio username nome do usu rio Nome do usu rio para se conectar W password For a a solicita o da senha Diagn sticos CREATE DATABASE O banco de dados foi criado com sucesso createdb Database creation failed A cria o do banco de dados falhou createdb createdb Comment creation failed Database was created O coment rio descri o do banco de dados n o p de ser criado mas o banco de dados foi criado Pode ser usado agora o comando SQL COMMENT ON DATABASE para criar o coment rio Se houver uma condi o de erro a
243. ios conce didos diretamente para o mesmo mais os privil gios concedidos para qualquer grupo do qual seja membro mais os privil gios concedidos para PUBLIC N o existe nenhuma necessidade de se conceder privil gios ao criador do objeto porque o criador possui todos os privil gios por padr o O criador pode entretanto decidir revogar alguns de seus pr prios privil gios por motivo de seguran a Observe que esta capacidade de conceder e revogar privil gios inerente ao criador n o podendo ser perdida O direito de eliminar o objeto ou alter lo de outra maneira n o descrita nos direitos que podem ser concedidos da mesma forma inerente ao criador n o podendo ser concedido ou revogado Dependendo do tipo do objeto o padr o pode incluir a concess o de alguns privil gios para PUBLIC nos priv il gios iniciais O padr o n o permitir o acesso p blico s tabelas e esquemas privil gio de cria o de tabela TEMP para bancos de dados privil gio EXECUTE para fun es e o privil gio USAGE para linguagens O criador do objeto pode claro revogar estes privil gios para m xima seguran a deve ser executado o comando REVOKE na mesma transa o que criar o objeto fazendo com que n o haja um intervalo de tempo em que outro usu rio possa acessar o objeto GRANT Os privil gios poss veis s o SELECT Permite consultar qualquer coluna SELECT da tabela vis o ou segii ncia e
244. istribuidores VALUES nextval serial nada CREATE SEQUENCE Atualizar o valor da seqii ncia ap s executar o comando COPY FROM BEGIN COPY distribuidores FROM arquivo entrada SELECT setval serial max id FROM distribuidores END Compatibilidade SQL92 O comando CREATE SEQUENCE uma extens o do PostgreSQL linguagem N o existe o comando CREATE SEQUENCE no SQL92 CREATE TABLE Nome CREATE TABLE cria uma tabela Sinopse CREATE LOCAL TEMPORARY TEMP TABLE nome da tabela nome da coluna tipo de dado DEFAULT express o padr o restri o de coluna restri o de tabela INHERITS tabela ascendent Do ae WITH OIDS WITHOUT OIDS onde restri o de coluna CONSTRAINT nome da restri o NOT NULL NULL UNIQUE PRIMARY KEY CHECK express o REFERENCES tabela referenciada coluna referenciada 1 MATCH FULL MATCH PARTIAL J ON DELETE a o ON UPDATE a o DEFERRABLE NOT DEFERRABLE INITIALLY DEFERRED INITIALLY IMMEDIATE e restri o de tabela CONSTRAINT nome da restri o UNIQUE nome da coluna 15 PRIMARY KEY nome da coluna CHECK expre
245. iva se preparar para tentar novamente as transa es que forem abortadas devido a impasse Ao se bloquear v rias tabelas o comando LOCK a b equivalente a LOCK a LOCK b As tabelas s o bloqueadas uma por uma na ordem especificada pelo comando LOCK Notas O comando LOCK IN ACCESS SHARE MODE requer o privil gio SELECT na tabela especificada Todas as outras formas de LOCK requerem os privil gios UPDATE e ou DELETE O comando LOCK til apenas dentro de um bloco de transa o BEGIN COMMIT porque o bloqueio liberado quando a transa o termina Um comando LOCK aparecendo fora de um bloco de transa o forma uma transa o auto contida e portanto o bloqueio liberado logo ap s ser obtido Os bloqueios efetuados pelos RDBMS Sistemas Gerenciadores de Banco de Dados Relacionais seguem a seguinte terminologia padr o EXCLUSIVE Um bloqueio exclusivo impede a concess o de outros bloqueios do mesmo tipo SHARE Um bloqueio compartilhado permite que outros tamb m obtenham o mesmo tipo de bloqueio mas impede que o bloqueio EXCLUSIVE correspondente seja concedido ACCESS Bloqueia o esquema da tabela ROW Bloqueia linhas individualmente O PostgreSQL n o segue esta terminologia exatamente O LOCK TABLE trata somente de bloqueios no n vel de tabela e portanto os nomes dos modos envolvendo linhas Row s o todos incorretos Os nomes destes modos geralmente
246. ivo psql para ver outras possibilidades Notes Use createlang to add a language Exemplos Para remover a linguagem pltcl droplang pltcl nome bd 22 droplang See Also createlang DROP LANGUAGE 23 dropuser Nome dropuser remove uma conta de usu rio do PostgreSQL Sinopse dropuser op es nome do usu rio Descri o O aplicativo dropuser remove um usu rio desta instala o do PostgreSQL e os bancos de dados que este usu rio possui Somente os usu rios com usesuper definido na tabela pg shadow podem remover usu rios do Post greSQL O dropuser um script envolt rio que usa o comando SQL DROP USER atrav s do terminal interativo do Post greSQL psql Portanto n o existe nada em especial sobre remover usu rios desta ou daquela maneira significando que o psql deve ser encontrado pelo script e que o servidor de banco de dados deve estar executando na m quina de destino Tamb m se aplicam os padr es definidos e as vari veis de ambiente dispon veis para o psql e para a biblioteca cliente libpg Op es O dropuser aceita os seguintes argumentos de linha de comando nome do usu rio Especifica o nome do usu rio do PostgreSQL a ser removido O nome deve existir no PostgreSQL Ser solicitado o nome caso n o seja fornecido na linha de comando S echo Exibe os comandos que o dropuser gera e envia para o servidor interactive Solicita a confirma o antes de remover o
247. kB 92 postmaster c nome valor Define o par metro de tempo de execu o designado Consulte o Guia do Administrador para obter a rela o destes par metros e as suas descri es A maior parte das outras op es de linha de comando s o na verdade formas curtas de atribui o destes par metros A op o c pode aparecer v rias vezes para definir v rios par metros dn vel de depura o Define o n vel de depura o DEBUG LEVEL n vel de depura o Quanto maior for definido este valor mais sa da de depura o ser escrita no 1og do servidor Os valores v o de 1 a 5 D diret rio de dados Especifica a localiza o do diret rio de dados no sistema de arquivos Veja a discuss o acima Desativa as chamadas a fsync para melhorar o desempenho correndo o risco de corrup o dos dados na ocorr ncia de uma falha do sistema Este par metro corresponde a definir fsync false no arquivo postgresgl conf Leia com aten o a documenta o antes de usar esta op o fsync true possui o efeito contr rio desta op o hnome do hospedeiro Especifica o nome ou o endere o do hospedeiro TCP IP no qual o postmaster aguarda as conex es dos aplicativos clientes VIRTUAL HOST nome do hospedeiro Por padr o aguarda em todos os endere os configurados incluindo localhost i Permite os clientes se conectarem via TCP IP Dom nio da Internet Sem esta op o somente as conex es via soquete do dom nio
248. ll amp Para iniciar o postmaster usando uma porta espec fica postmaster p 1234 Este comando inicia o postmaster se comunicando atrav s da porta 1234 Para se conectar a este postmaster usando o psql deve se executar psql p 1234 ou definir a vari vel de ambiente PGPORT export PGPORT 1234 psql Par metros de tempo de execu o nomeados podem ser definidos usando se um destes estilos postmaster c sort_mem 1234 postmaster sort mem 1234 As duas formas substituem o que estiver definido para sort mem em postgresql conf Observe que os sub linhados nos nomes dos par metros podem ser escritos na linha de comando com o caractere sublinhado ou o tra o dash Dica Exceto para experimentos de curta dura o provavelmente uma pr tica melhor editar as defini es no arquivo postgresql conf do que depender das chaves da linha de comando para definir os par metros Consulte tamb m initdb pg ctl 96
249. m requerida por motivo de consist ncia quando v rias tabelas relacionadas s o modificadas os outros usu rios n o enxergam os estados intermedi rios enquanto todas as atualiza es relacionadas n o estiverem terminadas O n vel de isolamento padr o da transa o no PostgreSQL de uma transa o enxergam apenas as mudan as efetivadas READ COMMITTED onde os comandos dentro antes da execu o do comando Por esse motivo BEGIN deve se utilizar SET TRANSACTION ISOLATION LEVEL SERIALIZABLE logo ap s o comando BEGIN se for necess rio um n vel de isolamento mais rigoroso para a transa o como alternativa pode se mudar o n vel de isolamento padr o da transa o consulte o Guia do Administrador do PostgreSQL para obter detalhes No modo SERIALIZABLE os comandos enxergam apenas as modifica es efetivadas antes do in cio da transa o na verdade antes da execu o do primeiro comando DML da transa o As transa es possuem as propriedades ACID atomicidade consist ncia isolamento e durabilidade padr o Notas O comando START TRANSACTION possui a mesma funcionalidade do BEGIN Use o comando COMMIT ou o comando ROLLBACK para terminar uma transa o Consulte o comando LOCK para obter mais informa es sobre o bloqueio de tabelas dentro de uma transa o Se o modo autocommit auto efetiva o for acionado ent o o comando BEGIN n o necess rio todo coma
250. ma o pode ser chamada implicitamente em qualquer contexto Notas Use o comando DROP CAST para remover as transforma es criadas pelo usu rio Para ser poss vel a convers o de tipos nas duas dire es necess rio declarar transforma es para as duas dire es explicitamente Antes do PostgreSQL 7 3 toda fun o que possuia o mesmo nome de um tipo de dado retornava este tipo de dado e recebia um argumento de um tipo diferente era automaticamente uma fun o de transforma o Esta conven o foi abandonada devido introdu o dos esquemas e da capacidade de representar transforma es binariamente compat veis nos cat logos As fun es de transforma o primitivas ainda seguem esta nomenclatura mas devem ser mostradas como transforma es em pg cast CREATE CAST Exemplos Para criar uma transforma o do tipo text para o tipo int 4 usando a fun o int 4 text CREATE CAST text AS int4 WITH FUNCTION int4 text Esta transforma o j pr existente no sistema Compatibilidade O comando CREATE CAST est em conformidade com o SQL99 exceto que o SQL99 n o prev os tipos binaria mente compat veis A cl usula AS IMPLICIT tamb m uma extens o do PostgreSQL Consulte tamb m CREATE FUNCTION CREATE TYPE DROP CAST Guia do Programador do PostgreSQL CREATE CONSTRAINT TRIGGER Nome CREATE CONSTRAINT TRIGGER cria um gatilho de restri
251. maior o n mero mais bordas e linhas a tabela ter mas isto depende do formato em particular No modo HTML ser traduzido diretamente para o atributo border nos outros modos somente os valores O sem borda 1 linhas divis rias internas e 2 moldura da tabela fazem sentido expanded ou x Alterna entre os formatos regular e expandido Quando o formato expandido ativado todas as sa das possuem duas colunas ficando o nome do campo esquerda e o valor direita Este modo til quando os dados n o cabem na tela no modo normal horizontal O modo expandido suportado por todos os quatro modos de sa da null O segundo argumento a cadeia de caracteres a ser impressa sempre que o campo for nulo O padr o n o imprimir nada o que pode ser facilmente confundido com por exemplo uma cadeia de caracteres vazia Portanto pode se preferir escrever pset null nulo fieldsep Especifica o separador de campos a ser utilizado no modo de sa da n o alinhado Desta forma pode se criar por exemplo uma sa da separada por tabula o por v rgula ou por um outro caractere conforme 58 psql a prefer ncia do programa Para definir o caractere de tabula o como separador de campo deve se usar pset fieldsep t O separador de campos padr o o a barra vertical ou o s mbolo do pipe footer Alterna a exibi o do rodap padr o x linhas recordsep Especifica o separador
252. master est aguardando as conex es dos aplicativos cliente PORT porta Por padr o o valor da vari vel de ambiente PGPORT ou se 93 postmaster PGPORT n o estiver definida o valor estabelecido durante a compila o normalmente 5432 Se for especi ficada outra porta diferente da porta padr o ent o todos os aplicativos cliente devem especificar a mesma porta usando a op o de linha de comando ou a vari vel de ambiente PGPORT Especifica que o processo postmaster deve iniciar no modo silencioso ou seja ser dissociado do terminal do usu rio iniciar seu pr prio grupo de processos e redirecionar sua sa da padr o e erro padr o para dev null O uso desta chave descarta toda a sa da para o 109 o que provavelmente n o o desejado porque torna muito dif cil a solu o dos problemas Veja abaixo uma maneira mais adequada de iniciar o postmaster em segundo plano silent mode false possui o efeito oposto desta op o nome valor Define o par metro de tempo de execu o designado uma forma mais curta da op o c Duas op es adicionais de linha de comando est o dispon veis para a depura o de problemas que fazem o servi dor terminar anormalmente Estas op es controlam o comportamento do postmaster nesta situa o e nenhuma delas foi feita para ser usada durante a opera o normal A estrat gia comum para esta situa o notificar a todos os outros servidores que eles devem terminar e
253. meros rand micos valor O valor da semente a ser usada pela fun o random Os valores permitidos s o n meros de ponto flutuante entre O e 1 os quais s o ent o multiplicados por 2 1 A semente tamb m pode ser definida atrav s da fun o set seed do SQL 4 SE ECT setseed valor SERVER_ENCODING Mostra a codifica o multibyte do servidor Atualmente este par metro pode ser exibido mas n o pode ser definido uma vez que a codifica o determinada em tempo de initdb TIME ZONE TIMEZONE Define a zona hor ria padr o para a sess o Os argumentos podem ser uma constante SQL de intervalo de tempo uma constante inteira ou de precis o dupla ou uma cadeia de caracteres representando uma zona hor ria reconhecida pelo sistema operacional hospedeiro Abaixo est o mostrados alguns valores t picos para definir a zona hor ria PST8PDT Define a zona hor ria para Berkeley Calif rnia Portugal Define a zona hor ria para Portugal Europe Rome Define a zona hor ria para a It lia Define a zona hor ria para 7 horas de deslocamento oeste do GMT equivalente PDT INTERVAL 08 00 HOUR TO MINUTE Define a zona hor ria para 8 horas de deslocamento oeste do GMT equivalente PST SET LOCAL DEFAULT Define como sendo a zona hor ria local a zona hor ria do sistema operacional Os nomes dispon veis para a zona hor ria dependem do sistema operacional Por exemplo
254. n o validadora deve usar a fun o elog O valor retornado pela fun o ignorado Diagn sticos CREATE LANGUAGE Mensagem retornada se a linguagem for criada com sucesso ERROR PL handler function nome da fun o doesn t exist Este erro ocorre quando a fun o nome da fun o n o for encontrada Notas Normalmente este comando n o deve ser executado diretamente pelos usu rios Para as linguagens procedurais fornecidas juntamente com a distribui o do PostgreSQL o aplicativo createlang deve ser utilizado porque este aplicativo tamb m instala o tratador de chamadas correto O aplicativo create lang chama o CREATE LANGUAGE internamente Nas vers es do PostgreSQL anteriores a 7 3 era necess rio declarar uma fun o tratadora como retornando o tipo opaque em vez de language handler Para permitir a carga de c pias de seguran a antigas o comando CREATE LANGUAGE vai aceitar as fun es declaradas como retornando opaque mas vai emitir uma mensagem NOTICE e mudar o tipo retornado declarado por language handler Use o comando CREATE FUNCTION para criar uma nova fun o Use o comando DROP LANGUAGE ou melhor ainda o aplicativo droplang para excluir linguagens procedurais O cat logo do sistema pg language registra informa es sobre as linguagens procedurais atualmente instaladas Table pg language Attribute Type Modifier CREATE L
255. n o necess rio nem que seja um nome com uma sintaxe v lida pode ser qualquer cadeia de caracteres com at 63 caracteres Em algumas vers es anteriores do PostgreSQL o nome tinha que vir entre aspas quando n o correspondia a nenhum nome de tabela existente mesmo que sintaticamente fosse um nome v lido mas n o mais necess rio Utiliza o Configurar e executar a seqii ncia escutar notificar usando o psql LISTEN virtual NOTIFY virtual Asynchronous NOTIFY virtual from backend with pid 8448 received Compatibilidade SQL92 N o existe o comando LISTEN no SQL92 LOAD Nome LOAD carrega ou recarrega um arquivo de biblioteca compartilhada Sinopse LOAD nome arquivo Descri o Carrega um arquivo de biblioteca compartilhada no espa o de endere amento do servidor PostgreSQL Se o arquivo tiver sido carregado anteriormente o mesmo descarregado primeiramente Este comando til para descarregar e recarregar um arquivo de biblioteca compartilhada que foi mudado ap s ter sido carregado pelo servidor Para usar a biblioteca compartilhada suas fun es devem ser declaradas pelo comando CREATE FUNC TION O nome do arquivo especificado da mesma forma que os nomes das bibliotecas compartilhadas no comando CREATE FUNCTION em particular pode se confiar no caminho de procura e na adi o autom tica das extens es de nomes de arquivos das bibliotecas compartilhadas do sistema padr o Co
256. n o gera esta advert ncia CREATE VIEW vista AS SELECT text Al Mundo CREATE VIEW Descri o O comando CREATE VIEW cria uma vis o A vis o n o fisicamente materializada Em vez disso uma regra automaticamente criada uma regra ON SELECT para realizar as opera es de SELECT na vis o O comando CREATE OR REPLACE VIEW semelhante mas se uma vis o com o mesmo nome existir ent o substitu da Somente pode ser substitu da uma vis o por outra que produza um conjunto id ntico de colunas ou seja colunas com os mesmos nomes e os mesmos tipos de dado Se o nome do esquema for fornecido por exemplo CREATE VIEW meu esquema minha visao ent oa vis o ser criada no esquema especificado sen o ser criada no esquema corrente aquele na frente do caminho de procura consulte CURRENT SCHEMA O nome da vis o deve ser diferente do nome de qualquer outra vis o tabela segii ncia ou ndice no mesmo esquema Notas Atualmente as vis es s o apenas para leitura o sistema n o permite inclus o atualiza o ou exclus o em uma vis o E poss vel obter o efeito de uma vis o atualiz vel criando se regras que troquem as inclus es na vis o por a es apropriadas em outras tabelas Para mais informa es consulte o comando CREATE RULE Use o comando DROP VIEW para excluir uma vis o Utiliza o C
257. n o s o permitidos na coluna NULL Valores nulos s o permitidos na coluna Este o padr o Esta cl usula s est dispon vel por compatibilidade com bancos de dados SQL fora do padr o Sua utiiza o desestimulada em novas aplica es UNIQUE restri o da coluna UNIQUE column name 1 restri o da tabela PRIMARY KI A restri o UNIQUE especifica a regra onde um grupo de uma ou mais colunas distintas de uma tabela podem conter apenas valores nicos O comportamento da restri o de unicidade para tabelas o mesmo da restri o de unicidade para colunas por m com a capacidade adicional de abranger v rias colunas Para a finalidade da restri o de unicidade valores nulos n o s o considerados iguais Cada restri o de unicidade da tabela deve abranger um conjunto de colunas diferente do conjunto de colunas abrangido por qualquer outra restri o de unicidade e da chave prim ria definida para a tabela Sen o seria apenas a mesma restri o declarada duas vezes mm y restri o da coluna PRIMARY KEY column name restri o da tabela CHE A restri o de chave prim ria especifica que a coluna ou colunas da tabela pode conter apenas valores nicos n o duplicados e n o nulos Tecnicamente a chave prim ria PRIMARY KEY simplesmente uma combina o de unicidade UNIQUE com n o nulo NOT NULL mas identificar um conjunto de colunas como chav
258. nada as linhas estar o em p ginas aleat rias fazendo uma p gina do disco ser lida para cada linha movida O PostgreSQL possui um cache mas a maioria das tabelas grandes n o cabem no cache outra maneira de se agrupar a tabela usar SE H ECT lista de colunas INTO TABLE nova tabela FROM nome da tabela ORDER BY lista de colunas que usa o c digo de ordena o do PostgreSQL da cl usula ORDER BY para criar a ordem desejada o que geral mente muito mais r pido do que a varredura do ndice para dados n o ordenados Em seguida a tabela original deve ser removida o comando ALTER TABLE RENAME deve ser utilizado para mudar o nome da nova tabela para o nome da tabela original e os ndices da tabela devem ser recriados Entretanto esta maneira n o preserva os OIDs restri es chaves estrangeiras privil gios concedidos e outras propriedades relacionadas tabela todos estes itens dever o ser recriados manualmente Utiliza o Agrupar a rela o empregados baseado no atributo ID CLUSTER emp ind ON emp Compatibilidade SQL92 N o existe o comando CLUSTER no SQL92 COMMENT Nome COMMENT guarda ou muda um coment rio sobre um objeto Sinopse COMMENT ON TABLE nome_do_objeto COLUMN nome da tabela nome da coluna AGGREGATE nome da agrega o tipo da agrega o CONSTRAINT nome da restri o ON nome da tabela DATABASE nome do objeto DOM
259. nada se a altera o for realizada com sucesso ALTER DATABASE ERROR database nome bd does not exist Mensagem de erro rertornada se o banco de dados especificado n o existir no sistema Notes Utilizando se o comando ALTER USER tamb m poss vel associar a um usu rio espec fico em vez de associar a um banco de dados o valor padr o para a sess o Defini es espec ficas para o usu rio prevalecem sobre defini es espec ficas para o banco de dados no caso de haver conflito Exemplos Para desabilitar a varedura de ndices por padr o no banco banco de dados test ALTER DATABASE teste SET enable indexscan TO off Compatibilidade O comando ALTER DATABASE uma extens o do PostgreSQL Consulte tamb m ALTER USER CREATE DATABASE DROP DATABASE SET ALTER GROUP Nome ALTER GROUP inclui ou exclui usu rios em um grupo Sinopse ALTER GROUP nome ADD USER nome do usu rio ALTER GROUP nome DROP USER nome do usu rio Entradas nome O nome do grupo a ser modificado nome do usu rio Os usu rios a serem inclu dos ou exclu dos no grupo Os nomes dos usu rios devem existir Sa das ALTER GROUP Mensagem retornada se a altera o for realizada com sucesso Descri o O comando ALTER GROUP utilizado para incluir ou excluir usu rios em um grupo Somente os superusu rios do banco de dados podem utilizar este comando Incluir
260. ndo SQL inicia automaticamente uma transa o Utiliza o Para iniciar uma transa o BEGIN WORK Compatibilidade SQL92 O comando BEGIN uma extens o do PostgreSQL linguagem N o existe o comando B EGIN expl cito no SQL92 o in cio da transa o sempre impl cito terminando pelo comando COMMIT ou pelo comando ROLLBACK Nota Muitos sistemas de banco de dados relacionais oferecem a funcionalidade de auto efetiva o auto commit por conveni ncia Observe que a palavra chave BEGIN utilizada para uma finalidade diferente no SQL embutido cuidado com rela o sem ntica da transa o ao se portar aplicativos de banco de dados O SQL92 requer que SERIALIZABLE seja o n vel de isolamento padr o das transa es Deve se ter muito CHECKPOINT Nome CHECKPOINT for a um ponto de controle no log de transa o Sinopse CHECKPOINT Descri o A grava o pr via do registro no log Write Ahead Logging WAL coloca periodicamente um ponto de controle checkpoint no log de transa o Para ajustar o intervalo autom tico do ponto de controle consulte as op es de configura o em tempo de execu o CHECKPOINT SEGMENTS e CHECKPOINT TIMEOUT O comando CHECKPOINT for a um ponto de controle imediato ao ser executado sem aguardar o ponto de controle pr definido Um ponto de controle um ponto na segii ncia do log de transa o no qual todos os arquivo
261. ndo NOTIFY Notas O nome notifica o n o necessita ser um nome de classe v lido podendo ser qualquer cadeia de caracteres v lida como um nome com at 64 caracteres O servidor n o reclama quando executado o UNLISTEN para algo que n o esteja sendo escutado Cada processo servidor executa automaticamente o comando UNLISTEN ao encerrar sua execu o UNLISTEN Utiliza o Para participar de um registro existente ISTEN virtual ISTEN NOTIFY virtual NOTIFY Asynchronous NOTIFY virtual from backend with pid 8448 received Quando o comando UNLISTEN executado os comandos NOTIFY posteriores s o ignorados UNLISTEN virtual UNLISTEN NOTIFY virtual NOTIFY notice no NOTIFY event is received Compatibilidade SQL92 N o existe o comando UNLISTEN no SQL92 UPDATE Nome T UPDATE atualiza linhas de uma tabela Sinopse UPDATE ONLY tabela SET coluna express o FROM lista de WHERE condi o Entradas tabela O nome opcionalmente qualificado pelo esquema de uma tabela existente Se ONLY for especificado somente esta tabela atualizada Se ONLY n o for especificado a tabela e todas as suas tabelas descen dentes se existirem s o atualizada Um pode ser apensado ao nome para indicar que as tabelas descen dentes devem ser varridas mas na vers o atual este o comportame
262. no n vel superior do FROM O CROSS JOIN equivalente ao INNER JOIN ON TRUE ou seja SELECT nenhuma linha removida pela qualifica o Estes tipos de jun o s o apenas uma nota o conveniente porque n o fazem nada que n o poderia ser feito usando simplesmente o FROM e o WHERE O LEFT OUTER JOIN retorna todas as linhas do produto cartesiano qualificado i e todas as linhas combinadas que passam pela condi o ON mais uma c pia de cada linha da tabela esquerda para a qual n o h uma linha da tabela direita que tenha passado pela condi o ON Esta linha da tabela esquerda estendida por toda a largura da tabela combinada inserindo se nulos para as colunas da tabela direita Observe que somente as condi es ON ou USING do pr prio JOIN s o consideradas na hora de decidir quais linhas possuem correspond ncia As condi es ON ou WHERE externas s o aplicadas depois De forma inversa o RIGHT OUTER JOIN retorna todas as linhas da jun o mais uma linha para cada linha da tabela direita sem correspond ncia estendida com nulos na tabela esquerda Isto apenas uma conveni ncia da nota o porque poderia ser convertido em um LEFT OUTER JOIN trocando se a tabela direita pela tabela esquerda O FULL OUTER JOIN retorna todas as linhas da jun o mais uma linha para cada linha da tabela esquerda sem correspond ncia estendida com nulos na tabela direita mais uma linha da tabela direit
263. nopse GRANT SELECT INSERT UPDATE DELETE RULE REFERENCES TRIGGER r ALL PRIVILEGES ON TABLE nome da tabela TO nome do usu rio GROUP nome do grupo PUBLIC GRANT CREATE TEMPORARY TEMP ALL PRIVILEGES ON DATABASE nome bd TO nome do usu rio GROUP nome do grupo PUBLIC GRAN EXECUTE ALL PRIVILEGES ON FUNCTION nome da fun o Itipo TO nome do usu rio GROUP nome do grupo PUBLIC GRANT USAGE ALL PRIVILEGES ON LANGUAGE nome da linguagem TO nome do usu rio GROUP nome do grupo PUBLIC GRANT CREATE USAGE ALL PRIVILEGES 3 ON SCHEMA nome do esquema TO nome do usu rio GROUP nome do grupo PUBLIC Descri o O comando GRANT concede permiss es espec ficas no objeto tabela vis o segii ncia banco de dados fun o linguagem procedural ou esquema para um ou mais usu rios ou grupos de usu rio Estas permiss es s o adi cionadas s j concedidas caso existam A palavra chave PUBLIC indica que o privil gio deve ser concedido para todos os usu rios inclusive aos que vierem a ser criado posteriormente PUBLIC pode ser considerado como um grupo implicitamente definido que sempre inclui todos os usu rios Observe que qualquer usu rio em particular possui a soma dos privil g
264. nserts Exporta os dados como comandos INSERT com nomes expl citos das colunas INSERT INTO tabela coluna VALUES Torna a importa o muito lenta mas necess rio se for desejado mudar a ordem das colunas 9 globals only Exporta somente os objetos globais usu rios e grupos nenhum banco de dados i ignore version Ignora a diferen a de vers o entre o pg_dump e o servidor de banco de dados O pg_dumpall pode tratar bancos de dados de vers es anteriores do PostgreSQL mas as vers es muito antigas n o s o mais suportadas atualmente anteriores a 7 0 Esta op o deve ser utilizada se for necess rio desconsiderar a verifica o de vers o mas se o pg_dumpall falhar n o diga que n o foi avisado Q oids Exporta os identificadores de objeto OIDs para todas as tabelas Esta op o deve ser usada quando a coluna OID referenciada de alguma maneira por exemplo em uma restri o de chave estrangeira Caso contr rio esta op o n o deve ser usada EM verbose Especifica o modo verboso Faz com que o pg dumpall exiba mensagens de progresso na sa da de erro padr o Os seguintes argumentos de linha de comando controlam os par metros de conex o ao banco de dados h hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix O padr o obtido da var
265. nsulte o Guia do Programador para obter mais detalhes Compatibilidade O comando LOAD uma extens o do PostgreSQL Consulte tamb m CREATE FUNCTION Guia do Programador do PostgreSQL LOCK Nome LOCK bloqueia explicitamente uma tabela Sinopse LOCK TABLE nome LOCK TABLE nome IN modo de bloqueio MODE onde modo de bloqueio um entre ACCESS SHARE ROW SHARE ROW EXCLUSIVE SHARE UPDATE EXCLUSIVE SHARE SHARE ROW EXCLUSIVE EXCLUSIVE ACCESS EXCLUSIVE Entradas nome O nome opcionalmente qualificado pelo esquema de uma tabela existente a ser bloqueada ACCESS SHARE MODE Este o modo de bloqueio menos restritivo Somente conflita com o modo ACCESS EXCLUSIVE uti lizado para proteger a tabela de ser modificada por um comando ALTER TABLE DROP TABLE OU VACUUM FULL concorrente Nota O comando seLECT obt m um bloqueio neste modo nas tabelas referenciadas Em geral qualquer comando que somente leia a tabela sem modific la ir obter este modo de bloqueio ROW SHARE MODE Conflita com os modos de bloqueio EXCLUSIVE e ACCESS EXCLUSIVE Nota O comando SELECT FOR UPDATE obt m um bloqueio neste modo na tabela s a ser modificada al m de bloqueio no modo access SHARE nas outras tabelas que s o referenciadas mas que n o s o selecionadas como FOR UPDATE ROW EXCLUSIVE MOD
266. nto no momento em que o comando for executado Descri o Este comando inicia uma nova transa o Se o n vel de isolamento for especificado a nova transa o ter este n vel de isolamento Em todos os outros aspectos o comportamento deste comando id ntico ao do comando BEGIN Notas O n vel de isolamento de uma transa o tamb m pode ser definido pelo comando SET TRANSACTION Se nen hum n vel de isolamento for especificado o n vel de isolamento padr o ser usado Compatibilidade SQL99 SERIALIZABLE o n vel de isolamento padr o no SQL99 mas geralmente n o o padr o no PostgreSQL o padr o definido originalmente READ COMMITTED O PostgreSQL n o fornece os n veis de isolamento READ START TRANSACTION UNCOMMITTED REPEATABLE READ Devido a aus ncia de bloqueio de predicado o n vel SERIALIZABLE n o verdadeiramente serializ vel Consulte o Guia do Usu rio para obter mais informa es No SQL99 esta declara o pode especificar duas outras propriedades da nova transa o se a transa o ape nas de leitura e o tamanho da rea de diagn sticos Nenhum destes conceitos s o suportados atualmente pelo PostgreSQL TRUNCATE Nome TRUNCATE Sinopse esv azia a tabela TRUNCATE Entradas nome TABLE nome O nome opcionalmente qualificado pelo esquema da tabela a ser truncada Sa das TRUNCATE TA
267. nto padr o Nas vers es anteriores a 7 1 ONLY era o comportamento padr o O padr o pode ser alterado mudando se a op o de configura o SOL INHERITANCE coluna O nome de uma coluna da tabela express o Uma express o v lida ou um valor a ser atribu do coluna lista de Uma extens o n o padr o do PostgreSQL que permite colunas de outras tabelas aparecerem na condi o WHERE condi o Consulte o comando SELECT para obter uma descri o mais detalhada da cl usula WHERE Sa das UPDATE Mensagem retornada se o comando for executado com sucesso O representa o n mero de linhas atual izadas Se for O ent o nenhuma linha foi atualizada UPDATE Descri o O comando UPDATE muda os valores das colunas especificadas em todas as linhas que satisfazem a condi o Somente as colunas a serem modificadas devem aparecer na rela o de colunas da declara o Refer ncias a matrizes arrays utilizam a mesma sintaxe encontrada no comando SELECT Assim sendo um nico elemento de uma matriz uma faixa de elementos de uma matriz ou toda uma matriz pode ser substitu da em um nico comando E necess rio possuir acesso de escrita na tabela para poder modific la assim como acesso de leitura em todas as tabelas mencionadas na condi o da cl usula WHERE Por padr o o comando UPDATE atualiza todas as tuplas da tabela especificada e de suas descendentes Para atualizar apenas a tabela refe
268. ntro de uma transa o o evento de notifica o n o enviado at que e a menos que a transa o seja efetivada Isto apropriado porque se a transa o for abortada deseja se que nenhum de seus comandos tenha surtido efeito incluindo o NOTIFY Mas isto pode ser desconcertante se for esperado que os eventos de notifica o sejam enviados imediatamente Em segundo lugar se um processo servidor na escuta recebe um sinal de notifica o enquanto est executando uma transa o o evento de notifica o n o ser enviado ao cliente conectado antes da transa o ser completada seja efetivada ou abortada Novamente o racioc nio que se a notifica o for enviada dentro de uma transa o que for abortada posteriormente vai se desejar que a notifica o seja desfeita de alguma maneira mas o processo servidor n o pode pegar de volta uma notifica o ap s envi la para o cliente Portanto os eventos de notifica o somente s o enviados entre transa es O resultado final disto que os aplicativos que utilizam o NOTIFY para sinaliza o de tempo real devem tentar manter as suas transa es curtas O NOTIFY se comporta como os sinais do Unix em um aspecto importante se o mesmo nome de condi o for sinalizado diversas vezes em uma sucess o r pida os ouvintes podem receber somente um evento de notifica o para v rias execu es do NOTIFY Portanto uma m id ia depender do n mero de notifica es recebidas
269. nulo O padr o N contrabarra N Pode se preferir uma cadeia de caracteres vazia por exemplo Nota Durante a leitura qualquer item de dado que corresponda a esta cadeia de caracteres ar mazenado com o valor nulo portanto deve se ter certeza de estar usando para ler a mesma cadeia de caracteres que foi usada para escrever Sa das COPY A c pia terminou com sucesso ERROR raz o A c pia falhou pela raz o mostrada na mensagem de erro Descri o O comando coPY copia dados entre tabelas do PostgreSQL e arquivos do sistema operacional O comando COPY TO copia o conte do de uma tabela para um arquivo enquanto o comando COPY FROM copia os dados de um arquivo para uma tabela adicionando os dados aos existentes na tabela Se uma rela o de colunas for especificada o comando copy somente copia os dados das colunas especificadas de ou para o arquivo Havendo alguma coluna na tabela que n o esteja na rela o de colunas o comando COPY FROM insere o valor padr o desta coluna O comando copy com um nome de arquivo instrui o servidor PostgreSQL a ler ou escrever diretamente no arquivo O arquivo deve ser acess vel ao servidor e o nome deve ser especificado sob o ponto de vista do servidor Quando stdin ou stdout s o especificados os dados fluem entre o cliente e o servidor Dica N o confunda o comando copy com a instru o copy do psql O copy executa copy FROM stdin OU COPY TO stdout e ent o l grav
270. o Se o nome do esquema for fornecido ent o o tipo ser criado no esquema especificado sen o ser criado no esquema corrente aquele na frente do caminho de procura consulte CURRENT SCHEMA O nome do tipo deve ser diferente do nome de qualquer tipo ou dom nio existente no mesmo esquema uma vez que as tabelas possuem tipos de dado associados os nomes dos tipos tamb m n o podem ser iguais aos nomes das tabelas no mesmo esquema Tipos Base A primeira forma do comando CREATE TYPE cria um novo tipo base tipo escalar Requer o registro de duas fun es usando CREATE FUNCTION antes de definir o tipo A representa o do novo tipo base determinada pela fun o de entrada que converte a representa o externa do tipo na representa o interna utiliz vel pelos operadores e fun es definidas para o tipo Naturalmente a fun o de sa da realiza a transforma o inversa A fun o de entrada pode ser declarada como recebendo um argumento do tipo cstring ou como recebendo tr s argumentos dos tipos cst ring OID e int 4 O primeiro argumento o texto de entrada na forma de uma cadeia de caracteres C o segundo argumento o tipo do elemento no caso de ser uma matriz array e o terceiro o typmod da coluna de destino se for conhecido Deve retornar um valor pr prio tipo de dado A fun o de sa da pode ser declarada como recebendo um argumento do novo tipo de dado ou recebendo dois argumentos
271. o Quando usado com um dos formatos de exporta o e combinado com o pg restore o pg dump fornece um mecanismo de exporta o e importa o flex vel O pg dump pode ser usado para exportar todo o banco de dados e posteriormente o pg restore pode ser usado para examinar o arquivo e ou selecionar que partes do banco de dados devem ser importadas O formato mais flex vel produzido o personalizado custom Fc que permite a sele o e a reordena o de todos os itens exportados sendo comprimido por padr o O formato tar Ft n o comprimido e n o permite reordenar os dados durante a importa o mas por outro lado bastante flex vel al m disso pode ser tratado por outras ferramentas como o tar Ao executar o pg dump deve se examinar a sa da procurando por advert ncias escritas na sa da de erro padr o atento especialmente s limita es listadas abaixo O pg dump cria c pias de seguran a consistentes mesmo se o banco de dados estiver sendo usado concorrente mente O pg dump n o bloqueia os outros usu rios que porventura estejam acessando o banco de dados leitura ou grava o Op es As seguintes op es de linha de comando s o utilizadas para controlar o formato de sa da nome bd Especifica o nome do banco de dados a ser exportado Se n o for especificado a vari vel de ambiente PGDATABASE utilizado Caso n o esteja definida o nome do usu rio especificado na conex o utilizado
272. o Com par metro o comando ANALYZE analisa somente uma tabela E poss vel ainda fornecer uma rela o de nomes de colunas e neste caso somente as estat sticas para estas colunas s o atualizadas ANALYZE Notas Aconselha se executar o comando ANALYZE periodicamente ou logo ap s realizar uma altera o significativa no conte do de uma tabela Estat sticas precisas auxiliam o otimizador na escolha do plano de consulta mais apropriado e portanto a melhorar o tempo do processamento da consulta Uma estrat gia habitual executar VACUUM e ANALYZE uma vez por dia em per odos de pouca carga Ao contr rio do comando VACUUM FULL o comando ANALYZE requer somente um bloqueio de leitura na tabela podendo portanto ser executado em conjunto com outras atividades na tabela Para tabelas grandes o comando ANALYZE pega amostras aleat rias do conte do da tabela em vez de examinar todas as linhas Esta estrat gia permite que mesmo tabelas muito grandes sejam analisadas em curto espa o de tempo Observe entretanto que as estat sticas s o apenas aproximadas e v o ser um pouco diferentes cada vez que o comando ANALYZE for executado mesmo que o conte do da tabela n o se altere podendo ocasionar pequenas mudan as no custo estimado pelo otimizador mostrado no comando EXPLAIN As estat sticas coletadas geralmente incluem a rela o dos valores com maior incid ncia de cada coluna e um his tograma mostrando a dist
273. o por senha Uma vez que atualmente isto se baseia em um hack o reconhecimento autom tico pode falhar misteriosamente e por isso existe esta op o para for ar a solicita o Se a solicita o da senha n o for feita e se o servidor requer autentica o por senha a tentativa de conex o ir falhar 2 expanded Ativa o modo formato de linha estendido Equivale ao comando Nx X no psqlrc N o l o arquivo de inicializa o psglrc 2 help Mostra a ajuda para os argumentos de linha de comando do psql As op es longas n o est o dispon veis em todas as plataformas Status de sa da O psql retorna O se terminar normalmente 1 se ocorrer um erro fatal pr prio falta de mem ria arquivo n o encontrado 2 se a conex o com o servidor teve problema e a sess o n o interativa 3 se ocorrer um erro em um script e a vari vel ON ERROR STOP estiver definida Utiliza o Conex o com o banco de dados O psql um aplicativo cliente do PostgreSQL comum Para se conectar a um banco de dados necess rio que se saiba o nome do banco de dados o nome da m quina e o n mero da porta do servidor e o nome de usu rio a ser usado para a conex o O psql pode ser informado sobre estes par metros atrav s das op es de linha de comando d h p e U respectivamente Se for encontrado um argumento que n o perten a a nenhuma op o este ser interpretado como o nome do banco de dados ou o n
274. o SQL92 CREATE SCHEMA Nome CREATE SCHEMA cria um esquema Sinopse CREATE SCHEMA nome do esquema AUTHORIZATION nome do usu rio elemento do esquema CREATE SCHEMA AUTHORIZATION nome do usu rio elemento do esquema 1 Entradas nome do esquema O nome do esquemam a ser criado Se for omitido o nome do usu rio ser usado como o nome do esquema nome do usu rio O nome do usu rio que ser o dono do esquema Se for omitido ser usado por padr o o nome do usu rio executando o comando Somente os superusu rios podem criar esquemas que perten am a outros usu rios elemento do esquema Um comando SQL definindo um objeto a ser criado no esquema Atualmente somente CREATE TABLE CREATE VIEW e GRANT s o aceitos como cl usulas do comando CREATE SCHEMA Os outros tipos de objetos podem ser criados atrav s de comandos pr prios ap s o esquema ter sido criado Sa das CREATE SCHEMA Mensagem retornada se o comando for executado com sucesso td zo ROR namespace nome do esquema already exists Se o esquema especificado j existir Descri o O comando CREATE SCHEMA cria um novo esquema no banco de dados corrente O nome do esquema deve ser diferente do nome de qualquer outro esquema existente no banco de dados corrente O esquema essencialment
275. o SQL99 Uma de suas sintaxes similar do PostgreSQL Consulte tamb m CREATE FUNCTION DROP GROUP Nome DROP GROUP remove um grupo de usu rios Sinopse DROP GROUP nome Entradas nome O nome de um grupo existente Sa das DROP GROUP Mensagem retornada se o grupo for removido com sucesso Descri o O comando DROP GROUP remove do banco de dados o grupo especificado Os usu rios cadastrados no grupo n o s o removidos Use o CREATE GROUP para criar grupos novos e o ALTER GROUP para gerenciar os membros do grupo Utiliza o Para eliminar um grupo DROP GROUP engenharia DROP GROUP Compatibilidade SQL92 N o existe o comando DROP GROUP no SQL92 DROP INDEX Nome DROP INDEX remove um ndice Sinopse DROP INDEX nome do ndice CASCADE RESTRICT Entradas nome do ndice O nome opcionalmente qualificado pelo esquema do ndice a ser removido CASCADE Remove automaticamente os objetos que dependem do ndice RESTRICT Recusa remover o ndice se existirem objetos dependente Este o padr o Sa das DROP INDEX Mensagem retornada se o comando for executado com sucesso ERROR index nome do ndice does not exist Esta mensagem ocorre se nome do ndice n o for um ndice no banco de dados Descri o O comando DROP INDEX remove um ndice existente no sistema de banco de dados Para executar este comando neces
276. o comando sem o espa o separador Por motivo de compatibilidade isto ainda suportado de alguma forma que n o ser explicada em detalhes aqui porque desencorajado Mas se forem recebidas mensagens estranhas tenha isso em mente Por exemplo testdb gt foo Field separator is oo o que talvez n o seja o esperado O psql somente trabalha adequadamente com servidores da mesma vers o Isto n o significa que outras com bina es v o falhar inteiramente mas problemas sutis e nem t o sutis podem acontecer Os comandos de contrabarra s o os mais propensos a falhar se o servidor for de uma vers o diferente Pressionar Control C durante um copy in envio de dados para o servidor n o apresenta o mais ideal dos comportamentos Se for recebida uma mensagem como COPY state must be terminated first simplesmente deve se refazer a conex o entrando com c Exemplos Nota Esta se o somente mostra uns poucos exemplos espec ficos para o psql Se for desejado apren der o SQL ou se tornar familiar com o PostgreSQL aconselha se a leitura do tutorial que est inclu do na distribui o O primeiro exemplo mostra como distribuir um comando por v rias linhas de entrada Observe a mudan a do prompt testdb gt CREATE TABLE minha tabela testdb gt first integer not null default 0 testdb gt second text testdb gt CREATE 67 psql Agora veja novamente a defini o da tabela
277. o deve terminar ERROR Unable to create database directory caminho bd ERROR Could not initialize database directory Estas mensagens est o relacionadas com a falta de permiss o no diret rio de dados o disco estar cheio ou outro problema no sistema de arquivos O usu rio sob o qual o servidor de banco de dados est processando deve ter permiss o para o local Descri o O comando CREATE DATABASE cria um banco de dados novo no PostgreSQL Normalmente o criador se torna o dono do novo banco de dados Os superusu rios podem criar bancos de dados cujos donos s o outros usu rios utilizando a cl usula OWNER e at mesmo criar bancos de dados cujos donos s o usu rios sem nenhum privil gio especial Usu rios comuns com o privil gio de CREATEDB somente podem criar bancos de dados cujos donos s o eles mesmos Um local alternativo pode ser especificado com a finalidade de por exemplo armazenar o banco de dados em um disco diferente O caminho deve ter sido preparado anteriormente com o comando initlocation Se o nome do caminho n o possuir uma barra interpretado como sendo o nome de uma vari vel de ambiente a qual deve ser conhecida pelo servidor Desta maneira o administrador do banco de dados pode exercer controle sobre os locais onde os bancos de dados podem ser criados Uma escolha usual por exemplo PGDATA2 Se o servidor for compilado com ALLOW ABSOLUTE DBPATHS o
278. o n o deve ser usada Nno owner aR N o gera comandos para definir o mesmo dono do objeto do banco de dados original Tipicamente o pg dump gera comandos connect espec fico do psq1l para definir o dono dos elementos do esquema Consulte tamb m as op es R e X use set session authorization Observe que a op o 0 n o impede todas as reconex es ao banco de dados mas somente quelas que s o usadas exclusivamente para acertar o dono Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg restore no reconnect S Pro be o pg dump gerar um script que requeira reconex es com o banco de dados quando for realizada a importa o Usualmente um script de importa o necessita reconectar v rias vezes como usu rios diferentes para especificar o dono original dos objetos Esta op o um instrumento bastante rudimentar porque faz o pg dump perder a informa o sobre o dono a menos que seja usada a op o X use set session authorization Uma das raz es poss veis para n o se desejar a reconex o durante a importa o o acesso ao banco de dados requerer interven o manual por exemplo senhas Esta op o s faz sentido para o formato texto puro Para os outros formatos esta op o pode ser especificada ao se chamar o pg restore schema only Exporta somente o esquema defini es dos dados sem os
279. o pg dumpall uma solu o integrada para realizar c pias de seguran a dos bancos de dados Mas observe a limita o n o pode exportar objetos grandes porque o pg dump n o exporta estes objetos para arquivos texto Se existirem bancos de dados contendo objetos grandes estes devem ser exportados usando um dos modos n o texto do pg dump Como o pg dumpall l as tabelas de todos os bancos de dados muito provavelmente ser necess rio se conectar como um superusu rio para poder gerar a exporta o completa Tamb m ser necess rio o privil gio de supe rusu rio para executar o script salvo para poder criar usu rios e grupos e para poder criar os bancos de dados O script SQL escrito na sa da padr o Devem ser usados operadores na linha de comando para redirecion lo para um arquivo Pode ser necess rio o pg dumpall se conectar v rias vezes ao servidor PostgreSQL solicitando a senha em cada uma destas vezes Neste caso conveniente existir o arquivo SHOME pgpass Op es Os seguintes argumentos de linha de comando s o utilizados para controlar o formato da sa da clean Gera comandos para excluir drop os objetos do banco de dados antes de cri los d inserts Exporta os dados como comandos INSERT em vez de copy Torna a importa o muito lenta mas os arquivos exportados s o mais facilmente portados para outros SGBDR 38 pg dumpall p column inserts attribute i
280. o tipo a ser criado comprimento interno Um valor literal especificando o comprimento interno do novo tipo fun o de entrada O nome da fun o criada pelo comando CREATE FUNCTION que converte os dados da forma externa para a forma interna do tipo fun o de sa da O nome da fun o criada pelo comando CREATE FUNCTION que converte os dados da forma interna numa forma adequada para ser exibida elemento O tipo sendo criado uma matriz array especifica o tipo dos elementos da matriz delimitador O caractere delimitador a ser usado entre os valores das matrizes arrays deste tipo padr o O valor padr o para o tipo de dado Usualmente omitido fazendo com que NULL seja o padr o alinhamento Alinhamento de armazenamento requerido por este tipo de dado Se for especificado deve ser char int 2 int 4 ou double o padr o int 4 CREATE TYPE armazenamento T cnica de armazenamento para este tipo de dado Se for especificado deve ser plain external extended ou main o padr o plain nome da coluna O nome de uma coluna do tipo composto tipo de dado O nome de um tipo de dado existente Sa das CREATE TYPE Mensagem retornada se o tipo for criado com sucesso Descri o O comando CREATE TYPE permite ao usu rio registrar um novo tipo de dado do usu rio no PostgreSQL para ser usado no banco de dados corrente O usu rio que define o tipo se torna o seu don
281. om nio caixa DROP DOMAIN caixa Compatibilidade SQL92 Consulte tamb m CREATE DOMAIN DROP DOMAIN DROP FUNCTION Nome DROP FUNCTION remove uma fun o definida pelo usu rio Sinopse DROP FUNCTION nome tipo 1 CASCADE RESTRICT Entradas nome O nome opcionalmente qualificado pelo esquema de uma fun o existente tipo O tipo de um par metro da fun o CASCADE Remove automaticamente os objetos que dependem da fun o como operadores e gatilhos RESTRICT Recusa remover a fun o se existirem objetos dependentes Este o padr o Sa das DROP FUNCTION Mensagem retornada se o comando for executado com sucesso WARNING RemoveFunction Function nome tipo does not exist Esta mensagem retornada quando a fun o especificada n o existe no banco de dados corrente Descri o O comando DROP FUNCTION remove a defini o de uma fun o existente Para executar este comando o usu rio deve ser o dono da fun o Os tipos de dado dos argumentos de entrada da fun o devem ser especificados porque v rias fun es diferentes podem existir com o mesmo nome mas com argumentos diferentes DROP FUNCTION Notas Consulte o comando CREATE FUNCTION para obter informa es sobre como criar fun es Exemplos Este comando remove a fun o que calcula a raiz quadrada DROP FUNCTION sgrt integer Compatibilidade O comando DROP FUNCTION definido n
282. om dados produzidos pelo comando SELECT As colunas da tabela possuem os nomes e tipos de dado associados s colunas da sa da produzida pelo comando SELECT exceto que poss vel substituir os nomes das colunas fornecendo se uma lista expl cita de novos nomes de colunas O comando CREATE TABLE AS exibe alguma semelhan a com a cria o de uma vis o mas na realidade bas tante diferente este comando cria a nova tabela e executa a consulta apenas uma vez para fazer a carga inicial dos dados da nova tabela A nova tabela n o vai ter conhecimento das pr ximas mudan as ocorridas na tabela de origem da consulta Contrastando com este comportamento uma vis o executa novamente o comando SELECT sempre que consultada Par metros LOCAL TEMPORARY OU LOCAL TEMP Se for especificado a tabela criada como uma tabela tempor ria Consulte o comando CREATE TABLE para obter mais detalhes nome da tabela O nome opcionalmente qualificado pelo esquema da tabela a ser criada nome da coluna O nome da coluna da nova tabela V rios nomes de colunas podem ser especificados utilizando uma lista de nomes separados por v rgula Se os nomes das colunas n o forem fornecidos ser o obtidos a partir dos nomes das colunas produzidas pela consulta consulta Uma declara o de consulta ou seja um comando SELECT Consulte o comando SELECT para obter a descri o da sintaxe permitida
283. ome do usu rio se o nome do banco de dados for fornecido Nem todas estas op es s o requeridas os padr es se aplicam Se for omitido o nome da m quina ent o o psql se conecta atrav s do soquete do dom nio Unix ao servidor na m quina local O n mero padr o para a porta determinado em tempo de compila o Desde que o servidor de banco de dados use o mesmo padr o n o ser necess rio especificar a porta na maioria dos casos O nome de usu rio padr o o nome do usu rio do Unix como 51 psgl tamb m o nome do banco de dados padr o Observe que n o poss vel se conectar a qualquer banco de dados com qualquer nome de usu rio O administrador de banco de dados informa as permiss es de acesso concedidas Para evitar a digita o podem ser definidas as vari veis de ambiente PGDATABASE PGHOST PGPORT PGUSER com os valores apropriados Se a conex o n o puder ser estabelecida por algum motivo por exemplo privil gios insuficientes o postmaster n o est executando no servidor etc o psql retorna uma mensagem de erro e termina Entrada de comandos No modo normal de opera o o psql disponibiliza um prompt com o nome do banco de dados ao qual est conectado seguido pela cadeia de caracteres gt Por exemplo psql testdb Welcome to psql 7 3 2 the PostgreSQL interactive terminal Type copyright for distribution terms h for help with SOL commands for help on internal slash comman
284. ompat vel com o SQL92 Notas As palavras chave WORK e TRANSACTION s o informativas podendo ser omitidas Use o ROLLBACK para desfazer a transa o END Utiliza o Para tornar todas as modifica es permanentes END WORK Compatibilidade SQL92 O comando END uma extens o do PostgreSQL que fornece uma funcionalidade equivalente ao COMMIT EXECUTE Nome EXECUTE executa uma consulta preparada Sinopse EXECUTE nome par metro Entradas nome O nome da consulta preparada a ser executada par metro O valor real do par metro da consulta preparada Deve ser uma express o que produza um valor com tipo compat vel com o tipo de dado especificado para a posi o deste par metro no comando PREPARI a consulta preparada Descri o O comando EXECUT E que criou E usado para executar uma consulta previamente preparada Uma vez que as consultas preparadas existem somente durante o tempo da sess o a consulta preparada deve ter sido criada por um comando PREPARE executado anteriormente na mesma sess o Se o comando PR EPAR ros deve ser passado para o comando fun es as consultas preparadas n o s o sobrecarregadas baseado no tipo ou no n mero de seus par metros o nome de uma consulta preparada deve ser nico para uma sess o E que criou a consulta especificar alguns par metros um
285. ono Par metros nome O nome da fun o a ser criada Se o nome do esquema for inclu do ent o a fun o criada no esquema especificado sen o criada no esquema corrente aquele na frente do caminho de procura consulte CURRENT SCHEMA O nome da nova fun o n o deve ser igual ao de qualquer outra fun o existente no mesmo esquema que tenha os mesmos tipos de argumentos Entretanto fun es com argumentos de tipos diferentes podem ter o mesmo nome o que chamado de sobrecarga overloading tipo do argumento Os tipos dos argumentos da fun o caso existam Os tipos de dado da entrada podem ser o tipo base com plexo de dom nio ou o mesmo tipo de uma coluna existente O tipo de dado da coluna referenciado escrevendo se nome da tabela nome da colunasTYPE utilizando se esta nota o ajuda a fun o se tornar independente das mudan as ocorridas na estrutura da tabela Dependendo da linguagem de imple menta o tamb m pode ser permitido especificar pseudo tipos como cst ring Pseudo tipos indicam que o tipo do argumento n o est completamente especificado ou que est fora do conjunto usual de tipos de dado do SQL tipo retornado O tipo do dado retornado O tipo de dado retornado pode ser especificado como um tipo base complexo de dom nio ou o mesmo tipo tipo de uma coluna existente Dependendo da linguagem de implementa o tamb m pode ser permitido especificar pseudo tipos
286. or Por padr o o valor inicial iguala valor min para seqii ncias ascendentes e iguala valor max para sequ ncias descen dentes cache A op o CACHE cache permite que os n meros da sequ ncia sejam pr viamente alocados e armazenados em mem ria para acesso mais r pido O valor m nimo 1 somente um valor pode ser gerado de cada vez ou seja sem armazenamento em mem ria e este tamb m o valor padr o CYCLE A palavra chave opcional CYCLE pode ser utilizada para permitir a seqii ncia reiniciar quando o valor max ou o valor min for atingido pela seqi ncia ascendente ou descendente respectivamente Se o limite for atingido o pr ximo n mero gerado ser valor min ou valor max respectivamente Sem a cl usula CYCLE ap s o limite ser atingido as chamadas fun o next val retornam um erro CREATE SEQUENCE Sa das CREATE SEQUENCE Mensagem retornada se o comando for executado com sucesso E o ROR Relation nome seg already exists A segii ncia especificada j existe E o ROR DefineSequence MINVALUE in cio can t be gt MAXVALUE max O valor especificado para o in cio da segii ncia est fora do intervalo E W ROR DefineSequence START value in cio can t be lt MINVALUE min O valor especificado para o in cio da seq ncia est fora do intervalo E o ROR DefineSequence MINVALUE min can t be gt MAXVALUE max
287. or especificada o comportamento padr o determinado pelo par metro PASSWORD ENCRYPTION do servidor Se a cadeia de caracteres apresentada j estiver criptografada 2 no formato MDS ent o esta cadeia de caracteres armazenada como est independentemente de CR CREATE USER ENCRYPTED ou UNENCRYPTED ser especificado Esta funcionalidade permite a restaura o das senhas criptografadas efetuadas por uma opera o de dump restore Consulte o cap tulo sobre autentica o de cliente no Guia do Administrador para obter mais detalhes sobre como configurar os mecanismos de autentica o Observe que os clientes antigos podem n o possuir suporte ao mecanismo de autentica o para o MDS que necess rio para trabalhar com as senhas armazenadas criptografadas EATEDB NOCREAT EDB Estas cl usulas definem a permiss o para o usu rio criar bancos de dados Se CREATEDB for especificado o usu rio sendo definido ter permiss o para criar seus pr prios bancos de dados Se NOCREATEDEB for especi ficado nega se ao usu rio a permiss o para criar bancos de dados Se esta cl usula for omitida NOCREATEDB ser utilizado por padr o CR EATEUS ER NOCREAT nome do grupo EUS ER Estas cl usulas determinam se permitido ou n o o usu rio criar novos usu rios Esta op o tamb m torna o usu rio um superusu
288. ormatos dos Arquivo Formato Texto Quando o comando copy utilizado sem a op o BINARY o arquivo lido ou escrito um arquivo de texto com uma linha para cada linha da tabela As colunas atributos s o separadas na linha pelo caractere delimitador Os valores dos atributos s o cadeias de caracteres geradas pela fun o de sa da ou aceit veis pela fun o de entrada para cada tipo de dado de atributo A cadeia de caracteres nula especificada utilizada no lugar dos atributos que s o nulos O comando COPY FROM ocasiona um erro se alguma linha do arquivo de entrada possuir mais ou menos colunas do que o esperado Se OIDS for especificado o OID lido ou escrito como a primeira coluna precedendo as colunas de dado do usu rio Vai acontecer um erro se OIDS for especificado para uma tabela que n o possua OIDs COPY O fim dos dados pode ser representado por uma nica linha contendo apenas contrabarra ponto Um marcador de fim de dados n o necess rio ao se ler de um arquivo Unix porque o fim de arquivo serve perfeitamente bem mas um marcador de fim dos dados deve ser fornecido para copiar os dados de ou para um aplicativo cliente O caractere contrabarra pode ser usado nos dados do comando COPY para evitar que caracteres dos dados sejam interpretados como delimitadores de linha ou de coluna Em particular os seguintes caracteres devem ser precedidos por uma contrabarra se aparecerem como parte do valor de um atribu
289. os de dados valores de par metros como a zona hor ria corrente etc Observe tamb m que a fam lia de fun es CURRENT TIMESTAMP se qualifica como est vel uma vez que seus valores n o mudam dentro de uma transa o O atributo VOLATILE indica que o valor do resultado da fun o pode mudar mesmo dentro da mesma varredura da tabela e portanto nenhuma otimiza o pode ser feita Bem poucas fun es de banco de dados s o vol teis neste sentido alguns exemplos s o random currval e timeofday Observe que toda fun o que possua efeito colateral deve ser classificada como vol til mesmo que o resultado seja bastante previs vel para previnir que as chamadas sejam otimizadas um exemplo setval CALLED ON NULL INPUT RETURNS NULL ON NULL INPUT STRICT CALLED ON NULL INPUT o padr o indica que a fun o chamada normalmente mesmo quando algum de seus argumentos nulo Portanto responsabilidade do autor da fun o verificar a presen a de valores nulos se for necess rio e responder de forma apropriada RETURNS NULL ON NULL INPUT OU STRICT indica que a fun o sempre retorna NULL quando qualquer um de seus argumentos for NULL Se este par metro for especificado a fun o n o ser executada quando existir argumento NULL em vez disto um resultado NULL assumido automaticamente EXTERNAL SECURITY INVOKER EXTERNAL SECURITY DEFINER SECURITY INVOKER indica que a fun o
290. os literalmente estes devem ser colocdos entre aspas Um padr o que contenha um ponto n o entre aspas interpretado como o padr o do nome do esquema seguido pelo padr o do nome do objeto Por exemplo Nat foo bar mostra todas as tabelas nos esquemas cujos nomes come am por foo e cujos nomes de tabelas come am por bar Se n o houver nenhum ponto ent o o padr o corresponde somente aos objetos vis veis no caminho de procura do esquema corrente Sempre que o par metro padr o for omitido o comando d ir mostrar todos os objetos vis veis no caminho de procura do esquema corrente Para mostrar todos os objetos do banco de dados deve ser usado o padr o x Funcionalidades avan adas Vari veis O psql fornece uma funcionalidade de substitui o de vari veis similar a dos comandos comuns da she11 do Unix Esta funcionalidade nova e n o muito sofisticada ainda mas existem planos para expandi la no futuro As vari veis s o simplesmente um par nome valor onde o valor pode ser uma cadeia de caracteres de qualquer comprimento Para definir uma vari vel usa se o meta comando do psql set testdb gt set foo bar define a vari vel foo com o valor bar Para usar o conte do da vari vel deve se preceder o nome por dois pontos e us la como argumento de qualquer comando de contrabarra testdb gt lecho foo bar 61 psql Nota Os argumentos do set est o sujeitos s mesmas regras de substi
291. os que correspondem ao pattern ou todos os objetos vis veis se nenhum argumento for fornecido Mas nos dois casos somente os objetos que possuem uma descri o s o listados Objeto compreende agrega es fun es operadores tipos rela es tabelas vis es ndices sequ ncias e objetos grandes regras e gatilhos Por exemplo gt dd version Object descriptions Schema Name Object Description pg catalog version function PostgreSQL version string 1 row As descri es dos objetos podem ser criadas pelo comando SQL COMMENT ON Nota O PostgreSQL armazena a descri o dos objetos na tabela do sistema pg description 54 NdD df psql padr o Lista todos os dom nios dispon veis tipos derivados Se padr o for especificado somente os dom nios correspondentes ser o mostrados padr o Lista as fun es dispon veis juntamente com o tipo de dado de seus argumentos e do valor retornado Se padr o for especificado somente as fun es correspondentes ser o mostradas Se a forma df for usada informa es adicionais sobre cada fun o incluindo a linguagem e a descri o s o mostradas Nota Para reduzir a confus o af n o mostra as fun es com tipo de dado 1 O Isto implementado ignorando se as fun es que recebem ou retornam o tipo cstring YdistvS padr o d1 do dp dT du Este n o o verdadeiro nome
292. ost hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p porta DOrt porta Especifica a porta Internet TCP IP ou o soquete do dom nio Unix local onde o servidor est aguardando as conex es U nome do usu rio username nome do usu rio Nome do usu rio para se conectar W password For a a solicita o da senha Diagn sticos CLUSTER Tudo correu bem clusterdb Cluster failed Aconteceu algum problema O clusterdb apenas um script envolt rio Consulte o comando CLUSTER e o aplicativo psql para obter uma descri o detalhada das mensagens de erro e dos problemas potenciais Observe que esta mensagem pode aparecer uma vez para cada tabela agrupada Ambiente PGDATABASE PGHOST PGPORT PGUSER Par metros padr o para a conex o Exemplos Para agrupar o banco de dados teste S clusterdb teste Para agrupar apenas a tabela foo no banco de dados chamado xyz zy clusterdb table foo xyzzy Consulte tamb m CLUSTER clusterdb createdb Nome createdb cria um novo banco de dados do PostgreSQL Sinopse createdb op es nome bd descri o Descri o O createdb cria um banco de dados novo do PostgreSQL Normalmente o usu rio que executa este comando se torna o dono do banco de dados Entretanto um outro dono pode ser
293. plo mostrado abaixo define uma classe de operadores para um ndice GiST para o tipo de dado _int4 matriz de int4 Consulte contrib intarray para ver o exemplo completo CREATE OPERATOR CLASS gist int ops DEFAULT FOR TYPE _int4 USING gist AS OPERATOR 3 amp amp OPERATOR 6 RECHECK OPERATOR 7 e OPERATOR 8 OPERATOR 20 GR _int4 query int FUNCTIO 1 g int consistent internal int4 int4 FUNCTIO 2 g_int_union bytea internal FUNCTIO 3 g_int_compress internal FUNCTIO 4 g_int_decompress internal FUNCTIO 5 g int penalty internal internal internal FUNCTIO 6 g int picksplit internal internal FUNCTIO 7 g int same int4 int4 internal As cl usula OPERATOR FUNCTION STORAGE podem aparecer em qualquer ordem Compatibilidade SQL92 O comando CREATE OPERATOR CLASS uma extens o do PostgreSQL N o existe o comando CREATE OPERATOR CLASS no SQL92 CREATE RULE Nome CREATE RULE cria uma regra Sinopse CREATE OR REPLACE RULE nome AS ON evento TO tabela WHERE condi o DO INSTEAD a o onde a o pode ser NOTHING consulta consulta j consulta ses Entradas nome O nome da regra a ser criada Deve ser diferente do nome de qualquer outra regra para a mesma tabela evento Evento um entre SELECT UPDATE
294. preparada n o pode ser usada por v rios clientes simult neos do banco de dados entretanto cada cliente pode criar e usar a sua pr pria consulta preparada As consultas preparadas possuem desempenho mais vantajoso quando um nico processo servidor usado para executar um grande n mero de consultas similares A diferen a no desempenho ser particularmente significante se as consultas possuirem um planejamento ou uma reescrita complexos Por exemplo quando uma consulta envolve uma jun o de muitas tabelas ou requer a aplica o de v rias regras Se a consulta for relativamente simples de ser planejada e reescrita mas relativamente dispendiosa para ser executada a vantagem no desempenho das consultas preparadas fica mais dif cil de ser notada Notas Em algumas situa es o planejamento da consulta produzido pelo PostgreSQL para uma consulta preparada pode ser inferior ao plano produzido quando a consulta submetida e executada normalmente Isto se deve ao fato de que quando a consulta planejada e o otimizador tenta determinar o plano timo para a consulta os valores reais dos par metros especificados na consulta n o est o dispon veis O PostgreSQL coleta estat sticas da distribui o dos dados na tabela e pode usar valores constantes na consulta para fazer suposi es sobre o resultado esperado ao executar a consulta Uma vez que estes dados n o est o dispon veis no planejamento das consultas preparadas com par met
295. priados para a instala o podem ser encontrados utilizando pg config Exemplos Havendo um arquivo fonte C com SQL embutido chamado prog1 pgc pode ser gerado um programa execut vel utilizando a seguinte segii ncia de comandos ecpg progl pge cc I usr local pgsql include c progl c cc o progl progl o L usr local pgsgl lib lecpg Consulte tamb m Guia do Programador do PostgreSQL para obter uma descri o mais detalhada da interface do SQL embutido 28 pg config Nome pg config retorna informa es sobre a vers o instalada do PostgreSQL Sinopse pg config bindir includedir includedir server libdir pkglibdir configure version Descri o O utilit rio pg config exibe os par metros de configura o da vers o do PostgreSQL atualmente instalada Sua finalidade por exemplo ser usado por pacotes de software que desejem interfacear com o PostgreSQL para encontrar os arquivos de cabe alho e bibliotecas necess rios Op es Para usar o pg config deve se fornecer uma ou mais das seguintes op es bindir Exibe a localiza o dos execut veis do usu rio Usa se por exemplo para encontrar o programa psql Nor malmente este tamb m o local onde o programa pg config reside includedir Exibe a localiza o dos arquivos de cabe alho da linguagem C das interfaces do cliente includedir server Exibe a localiza o dos arquivos de cabe alho da l
296. pse ALTER DATABASE nome SET vari vel TO valor DEFAULT ALTER DATABASE nome RESET vari vel Descri o O comando ALTER DATABASE utilizado para mudar o valor padr o de uma vari vel de configura o de tempo de execu o para a sess o em um banco de dados do PostgreSQL Sempre que uma nova sess o for iniciada neste banco de dados o valor especificado se torna o padr o para a sess o O padr o espec fico para o banco de dados prevalece sobre qualquer outra defini o presente no arquivo postgresql conf ou que tenha sido recebida do postmaster Somente um superusu ro ou o dono do banco de dados podem mudar os padr es para a sess o de um banco de dados Par metros nome O nome do banco de dados cujo padr o para a sess o est sendo alterado vari vel valor Define para a sess o do banco de dados o valor padr o da vari vel de configura o especificada como o valor fornecido Se valor for DEFAULT ou de forma equivalente se RESET for usado a defini o da vari vel para o banco de dados espec fico removida e o valor padr o global do sistema ser herdado para as novas sess es do banco de dados Use RESET ALL para apagar todas as defini es Consulte o comando SET e o Guia do Administrador para obter mais informa es sobre os nomes e valores permitidos para as vari veis Diagn sticos ALTER DATABASE Mensagem retor
297. pset outras defini es de op es de sa da Yi nome do arquivo Ler a entrada no arquivo nome do arquivo e executar como se tivesse sido digitada pelo teclado Nota Se for desejado ver as linhas na tela enquanto estas s o lidas deve se definir a vari vel ECHO como ali 56 psgl NM ou list Lista todos os bancos de dados do servidor assim como seus donos Deve se anexar o caractere ao nome do comando para listar as descri es dos bancos de dados tamb m Se o PostgreSQL foi compilado com suporte codifica o multibyte o esquema de codifica o de cada banco de dados tamb m mostrado V1o export loid nome do arquivo L do banco de dados o objeto grande com OID iguala 10id e escreve em nome do arquivo Observe que isto sutilmente diferente da fun o do servidor 1o export que atua com a permiss o do usu rio como o qual o servidor de banco de dados processa e no sistema de arquivos do servidor Dica Use N1o 1ist para descobrir os OIDs dos objetos grandes Nota Veja a descri o da vari vel Lo TRANSACTION para obter informa es importantes com rela o a todas as opera es com objetos grandes Vlo import nome do arquivo coment rio Armazena o arquivo em um objeto grande do PostgreSQL Opcionalmente associa o coment rio fornecido com o objeto Exemplo foo gt Nlo import home peter pictures photo xcf uma fotografia minha lo import 152801 A resposta indica que o o
298. psgl Para um comando prosseguir atrav s de v rias linhas deve se digitar uma contrabarra precedendo cada caractere de nova linha exceto da ltima Tamb m n o existe nenhuma das conveni ncias da edi o de linha de comando n o existe o hist rico dos comandos por exemplo Para sair do servidor digite EOF geralmente Control D Consulte a p gina de refer ncia do postgres para obter mais informa es Utiliza o Reconstruir os ndices da tabela minha tabela REINDEX TABLE minha tabela Reconstruir um nico ndice R Reconstruir todos os ndices do sistema somente funciona utilizando um servidor aut nomo R E IND EX INDEX meu indice E IND EX DATABASE meu banco de dados FORCE Compatibilidade SQL92 N o existe o comando RE INDEX no SQL92 GA REINDEX RESET Nome Sinopse RESET vari vel Entradas vari vel RESET atribui a par metros de tempo de execu o o seu valor padr o O nome de um par metro de tempo de execu o Consulte o comando SET para ver a rela o ALL Atribui a todos os par metros de tempo de execu o que podem ser alterados o seu valor padr o Descri o O comando RESET atribui a par metros de tempo de execu o o seu valor padr o Consulte o comando SET para obter detalhes O comando RESET uma forma alternativa para
299. que n o feito por padr o nomes de caminhos ab solutos identificados por uma barra inicial por exemplo usr local pgsql data tamb m s o permitidos Por padr o o novo banco de dados ser criado clonando o banco de dados padr o do sistema templatel Um gabarito diferente pode ser especificado escrevendo se TEMPLATE nome Em particular escrevendo se TEMPLATE template pode ser criado um banco de dados b sico contendo apenas os objetos padr o pre definidos pela vers o do PostgreSQL sendo utilizada Esta forma til quando se deseja evitar a c pia de qualquer objeto da instala o local que possa ter sido adicionado ao templatel O par metro opcional de codifica o permite a escolha de uma codifica o para o banco de dados se o servidor em uso foi compilado com suporte codifica o multibyte Quando este par metro n o especificado o padr o utilizar a mesma codifica o do banco de dados usado como gabarito Os par metros opcionais podem ser escritos em qualquer ordem e n o apenas na ordem mostrada acima Notas O comando CREATE DATABASE uma extens o da linguagem do PostgreSQL Use o comando DROP DATABASE para excluir um banco de dados CREATE DATABASE O aplicativo createdb um script envolt rio criado em torno deste comando fornecido por conveni ncia Existem quest es associadas seguran a e integridade dos dados envolvidas na utiliza
300. r como um superusu rio do PostgreSQL Ser um superusu rio tamb m implica na capacidade de n o ser afetado pelas verifica es de permiss o de acesso do banco de dados portanto o privil gio de superusu rio deve ser concedido criteriosamente O createuser um script envolt rio que usa o comando SQL CREATE USER atrav s do terminal interativo do PostgreSQL psql Portanto n o existe nada em especial sobre criar usu rios desta ou daquela maneira signifi cando que o psql deve ser encontrado pelo script e que o servidor de banco de dados deve estar executando na m quina de destino Tamb m se aplicam os padr es definidos e as vari veis de ambiente dispon veis para o psql e para a biblioteca cliente libpg Op es O createuser aceita os seguintes argumentos na linha de comando nome do usu rio Especifica o nome do usu rio do PostgreSQL a ser criado Este nome deve ser nico entre todos os usu rios do PostgreSQL a adduser E permitido ao novo usu rio criar outros usu rios Nota na verdade isto faz do novo usu rio um supe rusu rio Esta op o n o tem um nome apropriado A no adduser N o permitido ao novo usu rio criar outros usu rios ou seja o novo usu rio um usu rio normal e n o um superusu rio d createdb E permitido ao novo usu rio criar bancos de dados 14 createuser D no createdb N o permitido ao novo usu rio criar bancos de dados e
301. r nulo CSTRING cadeia de caracteres de destino cadeia de caracteres C terminada por nulo INTEGER comprimento da cadeia de caracteres de origem returns VOID CREATE CONVERSION Notas Use o comando DROP CONVERSION para remover as convers es definidas pelo usu rio Os privil gios necess rios para criar uma convers o podem ser alterados em um vers o futura Exemplos Para criar uma convers o da codifica o UNICODE para LATIN utilizando minha funcao CREATE CONVERSION minha conversao FOR UNICODE TO LATIN1 FROM minha funcao Compatibilidade O comando CREATE CONVERSION uma extens o do PostgreSQL N o existe o comando CREATE CONVERSION no SQL99 Consulte tamb m CREATE FUNCTION DROP CONVERSION Guia do Programador do PostgreSQL CREATE DATABASE Nome CREATE DATABASE cria um banco de dados Sinopse CREATE DATABASE nome WITH OWNER dono bd LOCATION caminho bd TEMPLATE gabarito ENCODING codifica o Entradas nome O nome do banco de dados a ser criado dono bd O nome do usu rio do banco de dados que ser o dono do novo banco de dados ou DEFAULT para usar O padr o ou seja o usu rio que est executando o comando caminho bd Um local alternativo no sistema de arquivos onde ser armazenado o banco de dados especificado como uma cadei
302. r selecionados pela op o m O modo Smart inteligente aguarda todos os clientes se desconectarem Este o modo padr o O modo Fast r pido n o aguarda os clientes se desconectarem Todas as transa es ativas s o desfeitas rollback os clientes s o desconectados for a e em seguida o servidor parado O modo Immediate imediato aborta todos os processor servidores sem executar uma parada limpa obrigando um processamento de recupera o ao reiniciar O modo reiniciar restart executa uma parada seguida por um in cio Permite mudar as op es de linha de comando do postmaster O modo recarregar reload simplesmente envia o sinal SIGHUP para o postmaster fazendo com que este releia os arquivos de configura o postgresql conf pg hba conf etc Permite mudar as op es do arquivo de configura o que n o requerem um rein cio completo para ter efeito O modo status verifica se o postmaster est executando e se estiver exibe o PID e as op es de linha de comando que foram usadas para cham lo 81 pe_ctl Op es D diret rio de dados Especifica a localiza o dos arquivos de banco de dados Se for omitido a vari vel de ambiente PGDATA usada l nome do arquivo Adiciona a sa da do 1og do servidor aa nome do arquivo Se o arquivo n o existir criado A umask definida como 077 n o permitindo o acesso ao arquivo de log pelos outros usu rios por padr o m modo
303. radas name O nome opcionalmente qualificado pelo esquema de uma classe de operadores existente m todo de acesso O nome do m todo de acesso do ndice para o qual a classe de operadores se destina CASCADE Remove automaticamente os objetos dependentes da classe de operadores RESTRICT Recusa excluir a classe de operadores se existirem objetos dependentes Este o comportamento padr o Sa das DROP OPERATOR CLASS Mensagem retornada se o comando for executado com sucesso Descri o O comando DROP OPERATOR CLASS remove do banco de dados uma classe de operadores existente Para exe cutar este comando deve se ser o dono da classe de operadores Notas O comando DROP OPERATOR CLASS uma extens o do PostgreSQL linguagem Consulte o comando CREATE OPERATOR CLASS para obter informa es sobre como criar classes de oper adores DROP OPERATOR CLASS Utiliza o Remover a classe de operadores B treechamada widget ops DROP OPERATOR CLASS widget ops USING btree Este comando n o executa quando existe algum ndice dependente da classe de operadores Deve se especificar CASCADE para remover estes ndices junto com a classe de operadores Compatibilidade SQL92 N o existe o comando DROP OPERATOR CLASS no SQL92 DROP RULE Nome DROP RULE remove uma regra Sinopse DROP RULE nome ON rela o CASCADE RESTRICT Entradas nome O nome de uma regra existente a
304. rador for definido este nomear o primeiro como seu comutador ou negador O primeiro ser atualizado como efeito colateral A partir do PostgreSQL 6 5 isto tamb m funciona para se ter apenas dois operadores referindo um ao outro As op es HASHES MERGES SORT1 SORT2 LTCMP e GTCMP est o presentes para apoiar o otimizador de con sultas na realiza o de jun es O PostgreSQL sempre pode avaliar uma jun o ou seja processar uma cl usula com duas vari veis tuplas separadas por um operador que retorna um booleano por substitui o interativa Adi cionalmente o PostgreSQL pode usar um algoritmo jun o hash entretanto necessita saber se esta estrat gia pode ser aplicada O algoritmo atual de jun o hash correto apenas para operadores que representam testes de igualdade al m disso a igualdade do tipo de dado deve significar igualdade bit a bit da representa o do tipo Por exemplo um tipo de dado que cont m bits n o utilizados que n o fazem diferen a nos testes de igualdade n o pode utilizar jun o hash O sinalizador HASHES indica ao otimizador de consultas que a jun o hash pode ser usada com seguran a com este operador De forma similar o sinalizador MERGES indica se uma ordena o mesclagem uma estrat gia de jun o poss vel de ser utilizada para este operador Um jun o de mesclagem requer que os dois tipos de dados de entrada possuam ordena o consistentes e que o operador
305. rador multi caractere CREATE OPERATOR As segii ncias e n o podem aparecer em nenhum lugar do nome do operador porque ser considerado in cio de coment rio Um nome de operador multi caractere n o pode terminar por ou por a menos que o nome tamb m contenha pelo menos um dos seguintes caracteres 10OH WN amp I NS Por exemplo um nome de operador permitido mas n o Esta restri o permite ao PostgreSQL analisar consultas em conformidade com o SQL sem requerer espa os entre elementos tokens Nota Ao se trabalhar com nomes de operadores que n o sejam padr o SQL usualmente necess rio usar espa os entre os operadores adjacentes para evitar ambiguidade Por exemplo definindo se um operador un rio esquerdo chamado e n o se pode escrever x ey deve se escrever x ey para garantir que o Post greSQL leia dois nomes de operadores e n o um O operador mapeado para lt gt na entrada portanto estes dois nomes s o sempre equivalentes Pelo menos um entre LEFTARG e RIGHTARG deve ser definido Para operadores bin rios os dois devem ser definidos Para operadores un rios direito somente o LEFTARG deve ser definido enquanto que para operadores un rios esquerdo somente o RIGHTARG deve ser definido O procedimento nome da fun o deve ser previamente definido utilizando o comando CREATE FUNCTION e deve estar definido para aceitar o n mero correto de argumentos um ou dois
306. ransa o Para conseguir esta perman ncia pode ser obtido o bloqueio da tabela no modo SHARE antes de realizar a consulta Este pro cedimento impede a altera o concorrente dos dados e garante que as pr ximas opera es de leitura na tabela enxergam uma situa o est vel de dados efetivados porque o modo de bloqueio SHARE conflita com qualquer modo de bloqueio ROW EXCLUSIVE necess rio para escrever O comando LOCK TABLE nome IN SHARE MODE aguarda at que todas as transa es que obtiveram um bloqueio no modo ROW EXCLUSIVE terminem efetivando ou desfazendo suas modifica es Portanto quando este bloqueio obtido n o existe nenhuma op era o de escrita sendo executada al m disso nenhuma transa o pode come ar enquanto o bloqueio n o for liberado Nota Para obter um efeito semelhante ao executar uma transa o no n vel de isolamento SERIALIZABLE necess rio executar o comando LOCK TABLE antes de executar qualquer comando da DML A vis o dos dados em uma transa o serializ vel congelada no momento em que o primeiro comando da DML come a a executar Um comando Lock posterior impede a escrita simult nea mas n o garante que o que lido pela transa o corresponde aos ltimos valores efetivados Se uma transa o deste tipo altera os dados da tabela ent o deve ser usado o modo de bloqueio SHARE ROW EXCLUSIVE em vez do modo SHARE garantindo que somente uma transa o deste tipo executa de cada v
307. re quando o comando SET seguido por um comando SET LOCAL dentro da mesma transa o o valor do comando SET LOCAL fica valendo at o final da transa o mas depois disso se a transa o for efetivada o valor do comando SET fica valendo Mesmo quando o autocommit est definido como off o comando SET n o inicia um novo bloco de transa o Consulte a se o sobre autocommit no Guia do Administrador para obter detalhes Abaixo est mostrados detalhes adicionais sobre alguns par metros que podem ser definidos DAT ESTYLE Escolhe o estilo de representa o da data hora Duas defini es separadas est o envolvidas o padr o de sa da para data hora e a interpreta o da entrada amb gua Estes s o os estilos de sa da para data hora ISO Usa o estilo ISO 8601 para data e hora YYYY MM DD HH MM SS Este o padr o SQL Usa o estilo Oracle Ingres para data e hora Observe que este estilo n o tem rela o com o SQL que define o estilo ISO 8601 O nome desta op o apenas um acidente hist rico PostgreSQL Usa o formato tradicional do PostgreSQL German Usa dd mm yyyy para representar as datas num ricas As duas op es a seguir determinam o subestilo dos formatos de sa da SQL e PostgreSQL e a interpre ta o preferencial para a entrada de data amb gua European Usa dd mm yyyy para representar as datas num ricas onturopean US Usa mm dd yyyy par
308. renciada deve ser utilizada a cl usula ONLY Utiliza o Mudar a palavra Drama por Suspense na coluna tipo UPDATE filmes SET tipo Suspense WHERE tipo Drama SE ECT FROM filmes WHERE tipo Drama OR tipo Suspense cod titulo did data prod tipo tempo BL101 The Third Man 101 1949 12 23 Suspense 01 44 P 302 Becket 103 1964 02 03 Suspense 02 28 M 401 War and Peace 104 1967 02 12 Suspense 05 57 T 601 Yojimbo 106 1961 06 16 Suspense 01 50 DA101 Das Boot 110 1981 11 11 Suspense 02 29 Compatibilidade SQL92 O SQL92 define uma sintaxe distinta para a declara o UPDATE na posi o do cursor UPDATE tabela SET coluna express o WHERE CURRE OF cursor onde cursor identifica um cursor aberto VACUUM Nome VACUUM limpa e opcionalmente analisa o banco de dados Sinopse VACUUM FULL FREE VACUUM FULL FREEZE N ERBOSE tabela ERBOSE ANALYZE tabela coluna 11 Entradas FULL Seleciona uma limpeza completa que pode recuperar mais espa o mas muito mais demorada e bloqueia a tabela em modo exclusivo FREEZE Seleciona um congelamento agressivo das tuplas VERBOSE Produz um relat rio detalhado da atividade de limpeza de cada tabela ANALYZE Atualiza as estat sticas utilizadas pelo otimizador para determinar o mo
309. resenta o bin ria pode ser diferente entre m quinas com arquiteturas diferentes O PostgreSQL n o soluciona a ordem dos bytes ou outros problemas de representa o para os cursores bin rios Portanto se a m quina cliente e a m quina servidora usam representa es diferentes por exemplo big endian versus little endian provavelmente n o vai ser desejado que os dados retornem no formato bin rio Entretanto os cursores bin rios podem ser um pouco mais eficientes porque existe menos sobrecarga de convers o na transfer ncia de dados do servidor para o cliente Dica Se a inten o for mostrar os dados em ASCII buscar os dados em ASCII reduz o esfor o realizado pelo cliente Notas Os cursores s est o dispon veis nas transa es Use os comando BEGIN COMMIT e ROLLBACK para definir um bloco de transa o DECLARE No SQL92 os cursores somente est o dispon veis nos aplicativos com SQL embutido ESQL O servidor Post greSQL n o implementa o comando OPEN cursor expl cito o cursor considerado aberto ao ser declarado Entretanto o ecpg o pr processador SQL embutido do PostgreSQL suporta as conven es de cursor do SQL92 incluindo as que envolvem os comandos DECLARE e OPEN Utiliza o Para declarar um cursor DECLARE liahona CURSOR FOR SELECT FROM filmes Compatibilidade SQL92 O SQL92 permite cursores somente no SQL embutido e em m dulos O PostgreSQL permite que o c
310. riar uma vis o consistindo de todos os filmes de com dia CREATE VIEW comedias AS SELECT FROM filmes WHERE tipo Com dia SELECT FROM comedias cod titulo did data prod tipo duracao UA502 Bananas 105 1971 07 13 Com dia 01 22 C 701 There s a Girl in my Soup 107 1970 06 11 Com dia 01 36 2 rows Compatibilidade SQL92 O SQL92 especifica algumas funcionalidades adicionais para o comando CREATE VIENW CREATE VIEW vis o coluna AS SELECT express o AS nome da coluna FROM tabela WHERE condi o WITH CASCADE LOCAL CHECK OPTION CREATE VIEW As cl usulas opcionais para o comando SQL92 completo s o CHECK OPTION Esta op o est relacionada com as vis es atualiz veis Todos os comandos INSERT e UPDATE em uma vis o ser o verificados para garantir que os dados satisfazem as condi es que definem a vis o Se n o satisfizer a atualiza o ser rejeitada LOCAL Verifica a integridade nesta vis o CASCADE Verifica a integridade nesta vis o e em todas as vis es dependentes CASCADE assumido se nem CAS CADE nem LOCAL forem especificados O comando CREATE OR REPLACE VIEW uma extens o do PostgreSQL linguagem DEALLOCATE
311. ribui o aproximada dos dados de cada coluna Um ou ambos podem ser omitidos se o comando ANALYZE consider los irrelevantes por exemplo em uma coluna com chave nica n o existem valores repetidos ou se o tipo de dado da coluna n o suportar os operadores apropriados Existem mais informa es sobre as estat sticas no Guia do Usu rio A extens o da an lise pode ser controlada ajustando se o valor de default statistics target ou coluna por coluna atrav s do comando ALTER TABLE ALTER COLUMN SET STATISTICS consulte o comando ALTER TABLE O valor especificado define o n mero m ximo de entradas presentes na lista de valores com maior incid ncia e o n mero m ximo de barras no histograma O valor padr o 10 mas pode ser ajustado para mais ou para menos para balancear a precis o das estimativas do otimizador contra o tempo gasto para a execu o do comando ANALYZE e a quantidade de espa o ocupado pela tabela pg statistic Em particular especificando se o valor zero desativa a coleta de estat sticas para a coluna podendo ser til para colunas que nunca s o usadas como parte das cl usulas WHERE GROUP BY ou ORDER BY das consultas porque as estat sticas destas colunas n o t m utilidade para o otimizador O maior n mero de estat sticas entre as colunas sendo analisadas determina o n mero de linhas amostradas para preparar as estat sticas Aumentando o n mero de estat sticas por coluna causa um
312. ros o plano escolhido pode ser inferior ao timo Para obter mais informa es sobre o planejamento de consultas e estat sticas coletadas pelo PostgreSQL com a finalidade de otimizar consultas veja a documenta o do comando ANALYZE Compatibilidade SQL92 O SQL92 inclui o comando PREPARE mas apenas para ser usado no SQL embutido nos clientes O comando PREPARE implementado pelo PostgreSQL tamb m usa uma sintaxe um pouco diferente REINDEX Nome REINDEX reconstr i ndices corrompidos Sinopse REINDEX TABLE DATABASE INDEX nome FORC mm Entradas TABLE Reconstr i todos os ndices da tabela especificada DATABASE Reconstr i todos os ndices do sistema do banco de dados especificado Os ndices das tabelas dos usu rios n o s o inclu dos INDEX Reconstr i o ndice especificado nome O nome da tabela banco de dados ou ndice a ser reindexado O nome da tabela e do ndice podem ser qualificados pelo esquema FORCE For a a reconstru o dos ndices do sistema Sem esta palavra chave o comando RE INDEX pula os ndices do sistema que n o est o marcados como inv lidos FORCE irrelevante para o comando R para reindexar ndices do usu rio Sa das REINDEX Mensagem retornada se a tabela for reindexada com sucesso E IND EX IND EX OU REINDEX Descri o
313. rows SELECT 1956 08 11 Musical 1981 11 11 Drama Musical Obter soma da coluna duracao de todos os filmes agrupando os resultados por tipo SELECT tipo SUM duracao AS total FROM filmes GROUP BY tipo tipo total A o 07 34 Com dia 02 58 Drama 14 28 Musical 06 42 Romance 04 38 5 rows Obter a soma da coluna duracao de todos os filmes agrupando os resultados por tipo mostrando apenas os grupos com total inferior a 5 horas SELECT tipo SUM duracao AS total FROM filmes GROUP BY tipo HAVING SUM duracao lt INTERVAL 5 hour tipo total Com dia 02 58 Romance 04438 2 rows Os dois exemplos mostrados abaixo s o formas id nticas de ordena o dos resultados de acordo com o conte do da segunda coluna nome SELEC SELEC id FROM distribuidores ORDER BY nome FROM distribuidores ORDER BY 2 nome 109 110 101 107 102 113 104 103 106 105 111 112 108 Mos Uni Wal Wes 20th Century Fox Bavaria Atelier British Lion Columbia Jean Luc Godard Luso filmes film Paramount Toho ted Artists t Disney Warner Bros tward 10 SELECT 13 rows Este exemplo mostra como obter a uni o das tabelas distribuidores e atores restringindo o resultado aos nomes que iniciam pela letra W em cada uma das tabelas Somente linhas distintas s o desejadas por isso a palavra chav
314. rquivo O p banco de dados P s t pa pl I ex DS mem riapara ordena o v vers o do protocolo W segundos nome valor Descri o O execut vel postgres o verdadeiro processo servidor que processa os comandos do PostgreSQL Normal mente n o chamado diretamente em vez dele o servidor multiusu rio postmaster ativado A segunda forma mostrada acima como o postgres chamado pelo postmaster somente conceitualmente porque o postmaster e O postgres s o na verdade o mesmo programa n o devendo ser chamado direta mente desta maneira A primeira forma chama o servidor diretamente em modo monousu rio interativo A uti liza o mais fregiiente deste modo durante a inicializa o pelo initdb Algumas vezes utilizado para depura o ou para recupera o de desastre Quando chamado em modo interativo a partir da she11 o usu rio pode entrar com comandos e os resultados s o exibidos na tela mas em uma forma que mais til para os desenvolvedores do que para os usu rios finais Deve se notar que executar o servidor em modo monousu rio n o muito apropriado para a depura o do servidor porque n o vai acontecer nenhuma comunica o entre processos e bloqueio genu nos Ao executar o servidor aut nomo o usu rio da sess o ser definido como o usu rio com o identificador 1 Este usu rio n o necessita existir portanto o servidor aut nomo pode ser usado para recuperar manualmente ce
315. rt porta Especifica a porta Internet TCP IP ou o soquete do dom nio Unix local onde o servidor est aguardando as conex es U nome do usu rio username nome do usu rio Nome do usu rio para se conectar W password For a a solicita o da senha Ambiente PGDATABASI PGHOST PGPORT PGUSER E Par metros padr o para a conex o Diagn sticos A maioria das mensagens de erro s o auto explicativas Se n o for execute o createlang com a op o echo e consulte o comando SQL respectivo para obter detalhes Consulte tamb m o aplicativo psql para ver outras possibilidades Notas Use o droplang para remover uma linguagem O createlang um script envolt rio que chama o psql v rias vezes Se as coisas estiverem dispostas de uma maneira que seja requerida uma senha para se conectar a senha ser solicitada v rias vezes Exemplos Para instalar a linguagem p1tc1 no banco de dados templatel createlang pltcl templatel 12 createlang Consulte tamb m droplang CREATE LANGUAGE 13 createuser Nome createuser cria uma nova conta de usu rio do PostgreSQL Sinopse createuser op es nome do usu rio Descri o O createuser cria um novo usu rio do PostgreSQL Somente os superusu rios usu rios com o usesuper definido na tabela pg shadow podem criar novos usu rios do PostgreSQL portanto o createuser deve ser executado por algu m que possa se conecta
316. rtos tipos de danos acidentais dos cat logos do sistema Poderes impl citos de superusu rio s o concedidos ao usu rio com identificador igual a 1 no modo aut nomo Op es Quando o postgres iniciado pelo postmaster herda todas as op es definidas para este Adicionalmente op es espec ficas do postgres podem ser passadas pelo postmaster usando a chave o Pode se evitar digitar a maior parte destas op es usando o arquivo de configura o Consulte o Guia do Admin istrador para obter detalhes Algumas op es seguras tamb m podem ser definidas pelo cliente ao se conectar de um modo dependente do aplicativo Por exemplo se a vari vel de ambiente PGOPTIONS estiver definida ent o os clientes baseados na libpg passam esta cadeia de caracteres para o servidor que vai interpret la como uma op o de linha de comando do postgres 88 postgres Finalidade geral As op es A B c d D F e name possuem o mesmo significado que no postmaster exceto que d 0 impede o n vel de depura o do postmaster ser propagado para o processo servidor Define o estilo padr o da data como European indicando que a regra dia precedendo o m s em vez de m s precedendo o dia deve ser usada para interpretar a entrada de datas amb guas e que o dia precede o m s em certos formatos de exibi o de data Consulte o Guia do Usu rio do PostgreSQL para obter mais informa es o nome do arquivo Envia
317. s a n o ser que ALL seja especificado Veja A cl usula EXCEPT A cl usula LIMIT permite que retorne para o usu rio apenas um subconjunto das linhas produzidas pela consulta Veja A cl usula LIMIT A cl usula FOR UPDATE faz com que o comando SELECT bloqueie as linhas selecionadas contra atualiza es simult neas necess rio possuir o privil gio SELECT na tabela para poder ler seus valores Consulte os comandos GRANT e REVOKE Para utilizar a cl usula FOR UPDATE tamb m necess rio possuir o privil gio UPDATE A cl usula FROM A cl usula FROM especifica uma ou mais tabelas de origem para o SELECT Se m ltiplas tabelas de origem forem especificadas o resultado ser conceitualmente o produto cartesiano de todas as linhas de todas estas tabelas mas geralmente condi es de qualifica o s o adicionadas para restringir as linhas retornadas a um pequeno subconjunto do produto cartesiano Quando o item da cl usula FROM simplesmente o nome de uma tabela s o inclu das implicitamente as linhas das subtabelas desta tabela descendentes que herdam Especificando se ONLY causa a supress o das linhas das subtabelas da tabela Antes do PostgreSQL 7 1 este era o comportamento padr o e a adi o das subtabelas era feita anexando se um ao nome da tabela Este comportamento antigo est dispon vel atrav s do comando SET SQL Inheritance TO OFF Um item da cl usula FROM pode ser tamb m uma subconsult
318. s es O identificador do usu rio da sess o pode ser mudado apenas se o usu rio inicial da sess o o usu rio autenti cado possuir o privil gio de superusu rio Sen o o comando aceito somente se especificar o nome do usu rio autenticado Os modificadores SESSION e LOCAL atuam da mesma maneira que atuam para o comando SET comum As formas DEFAULT e RESET redefinem os identificadores da sess o e do usu rio corrente como sendo o nome do usu rio autenticado originalmente Esta forma sempre aceita Exemplos SELECT SESSION USER CURRENT USER current user session user pedro pedro SET SESSION AUTHORIZATION paulo SELECT SESSION USER CURRENT USER current user session user paulo paulo SET SESSION AUTHORIZATION Compatibilidade SQL99 O SQL99 permite que algumas outras express es apare am no lugar de nome do usu rio as quais n o s o importantes na pr tica O PostgreSQL permite a sintaxe do identificador nome do usu rio que o SQL n o permite O SQL n o permite a execu o deste comando durante uma transa o O PostgreSQL n o faz esta restri o porque n o h motivo para faz la O padr o deixa os privil gios necess rios para executar este comando por conta da implementa o SET TRANSACTION Nome SET TRANSACTION define as caracter sticas da transa o corrente Sinopse SET TRANSACTION ISOLATION LEVEL READ COMMITTED SERIALIZABLE S
319. s rio ser o dono do ndice Notas O comando DROP INDEX uma extens o da linguagem do PostgreSQL Consulte o comando CREATE INDEX para obter informa es sobre como criar ndices DROP INDEX Utiliza o Remover o ndice titulo idx DROP INDEX titulo idx Compatibilidade SQL92 O SQL92 define comandos atrav s dos quais um banco de dados relacional gen rico pode ser acessado O ndice uma funcionalidade dependente da implementa o e portanto n o existe comando espec fico para ndice ou a sua defini o na linguagem SQL92 DROP LANGUAGE Nome DROP LANGUAGE remove uma linguagem procedural definida pelo usu rio Sinopse DROP PROCEDURAL LANGUAGE nome CASCADE RESTRICT Entradas nome O nome de uma linguagem procedural existente Para manter a compatibilidade com as vers es anteriores o nome pode estar entre ap strofos CASCADE Remove automaticamente os objetos que dependem da linguagem como as fun es escritas nesta lin guagem RESTRICT Recusa remover a linguagem se existirem objetos dependentes Este o padr o Sa das DROP LANGUAGI es Mensagem retornada se a linguagem for removida com sucesso ERROR Language nome doesn t exist Esta mensagem ocorre quando a linguagem chamada nome n o encontrada no banco de dados Descri o O comando DROP PROCEDURAL LANGUAGE remove a defini o da linguagem proced
320. s SELECT FROM tmp INSERT Inclus o em matrizes arrays Consulte o Guia do Usu rio do PostgreSQL para obter mais informa es sobre matrizes Criar um tabuleiro vazio de 3x3 posi es para o Jogo da Velha todos 3 comandos criam o mesmo atributo do tabuleiro INSERT INTO tictactoe game board 1 3 1 3 VALUES 1 t rn E Ek rr DDD INSERT INTO tictactoe game board 3 3 VALUES 2 INSERT INTO tictactoe game board VALUES 3 n n full Compatibilidade SQL92 O comando INSERT totalmente compat vel com o SQL92 As poss veis limita es nas funcionalidades da cl usula de consulta est o documentadas no comando SELECT LISTEN Nome LISTEN escuta uma notifica o Sinopse LISTEN nome Entradas name O nome da condi o de notifica o Sa da LISTEN Mensagem retornada se a notifica o for registrada com sucesso WARNING Async Listen We are already listening on nome Este processo servidor j est registrado para esta condi o de notifica o Descri o O comando LISTEN registra o processo servidor corrente do PostgreSQL para escutar a condi o de notifica o nome Sempre que o comando NOTIFY nome executado tanto por este processo servidor quanto por qualquer outro conectado ao mesmo banco de dados todos os processos servidores escutando esta condi o de notifica o neste in
321. s colaterais da con sulta acontecem na forma usual Para usar EXPLAIN ANALYZE em um INSERT UPDATE ou DELETE sem deixar que os dados sejam afetados utilize o seguinte procedimento BEGIN EXPLAIN ANALYZE ROLLBACK A op o VERBOSE fornece a representa o interna completa da rvore do plano em vez de apenas o seu sum rio Geralmente esta op o til apenas para fazer o debug do pr prio PostgreSQL A sa da produzida pela op o VERBOSE pode ser formatada para ser facilmente lida ou n o dependendo do que for especificado para o par metro de configura o EXPLAIN PRETTY PRINT Notas Existem apenas informa es esparsas sobre a utiliza o do otimizador na documenta o do PostgreSQL Consulte o Guia do Usu rio e o Guia do Programador para obter mais informa es Utiliza o Para mostrar o plano da consulta para uma consulta simples em uma tabela com uma nica coluna int 4 e 10 000 linhas EXPLAIN SELECT FROM foo QUERY PLAN Seq Scan on foo cost 0 00 155 00 rows 10000 width 4 1 row Havendo um ndice e se for feita uma consulta com uma condi o WHERE index vel o EXPLAIN mostra um plano diferente EXPLAIN EXPLAIN SELECT FROM foo WHERE i 4 QUERY PLAN Index Scan using fi on foo cost 0 00 5 98 rows 1 width 4 Index Cond i 4 2 rows O exemplo abaixo mostra um plano para uma consulta que cont m uma fun o de agrega o EXP
322. s comandos ANALYZE posteriores O valor pode ser definido no intervalo de O a 1000 como alternativa pode ser definido como 1 para utilizar o valor padr o do sistema para as estat sticas SET STORAGE Esta forma define o modo de armazenamento para a coluna Controla se a coluna armazenada junto com as outras ou em uma tabela suplementar e se os dados devem ser comprimidos ou n o PLAIN deve ser usado para valores de tamanho fixo como o INTEGER sendo mantidos junto e n o comprimido MAIN usado para dados mantidos juntos que podem ser comprimidos EXTERNAL usado para dados externos e n o comprimidos e EXTENDED usado para dados externos comprimidos EXTENDED o padr o para todos os tipos de dados que o suportam A utiliza o de EXTERNAL faz com que as opera es de substring em uma coluna TEXT sejam mais r pidas embora o espa o para armazenamento aumente RENAME A forma RENAME muda o nome de uma tabela um ndice uma sequ ncia ou uma vis o ou o nome de uma coluna da tabela N o produz efeito sobre os dados armazenados ADD defini o de restri o de tabela Esta forma adiciona uma nova restri o para a tabela usando a mesma sintaxe do comando CREATE TABLE DROP CONSTRAINT Esta forma exclui a restri o da tabela Atualmente as restri es de tabela n o necessitam ter nomes nicos portanto pode haver mais de uma restri
323. s de dados foram atu alizados para refletir a informa o no log Todos os dados s o escritos no disco Consulte o Guia do Administrador do PostgreSQL para obter mais informa es sobre o WAL Somente os superusu rios podem executar o comando CHECKPOINT A utiliza o deste comando durante uma opera o normal n o esperada Consulte tamb m Guia do Administrador do PostgreSQL Compatibilidade O comando CHECKPOINT uma extens o do PostgreSQL linguagem CLOSE Nome CLOSE fecha o cursor Sinopse CLOSE cursor Entradas cursor O nome do cursor aberto a ser fechado Sa das CLOSE CURSOR Mensagem retornada se o cursor for fechado com sucesso WARNING PerformPortalClose portal cursor not found Esta advert ncia exibida quando o cur sor n o est declarado ou se j tiver sido fechado Descri o O comando CLOSE libera os recursos associados a um cursor aberto Ap s o cursor ser fechado n o permitida nenhuma opera o posterior sobre o mesmo O cursor deve ser fechado quando n o for mais necess rio Um fechamento impl cito executado para todos os cursores abertos quando a transa o terminada pelo co mando COMMIT ou pelo comando ROLLBACK Notas O PostgreSQL n o possui um comando expl cito OPEN cursor o cursor considerado aberto ao ser declarado Use o comando DECLARE para declarar um cursor Utiliza o Fechar o cursor cur
324. s e as notifica es obtidas do servidor de banco de dados assim como a sa da dos v rios comandos de contrabarra que consultam o banco de dados como o d mas n o as mensagens de erro Dica Para intercalar texto entre os resultados das consultas usa se qecho Envia o buffer de comando corrente para a sa da padr o pset par metro valor Este comando define op es que afetam a sa da das tabelas de resultado das consultas O par metro indica qual op o ser definida A sem ntica do valor depende do par metro As op es ajust veis de exibi o s o format Define o formato de sa da como unaligned n o alinhado aligned alinhado html ou latex Abrevia es nicas s o permitidas O que equivale a dizer que uma letra basta O modo Unaligned escreve todos os campos da tupla em uma linha separados pelo separador de campos ativo no momento Pretende se com isso poder criar uma sa da que sirva de entrada para outro programa separada por tabula o por v rgula etc O modo Aligned a sa da de texto padr o intelig vel e agradavelmente formatada Os modos HTML e LaTeX produzem tabelas feitas para serem inclu das em documentos usando a linguagem de marca o correspondente N o s o documentos completos Isto n o t o problem tico no HTML mas no LaTeX deve haver um inv lucro completo do documento border O segundo argumento deve ser um n mero Em geral quanto
325. sa da da tabela for desalinhado muda para alinhado Se n o for desalinhado define como desalinhado Este comando mantido para compatibilidade com as vers es anteriores Veja o pset para uma solu o geral cda nome do diret rio Muda o diret rio de trabalho corrente para nome do diret rio Sem argumento muda para o diret rio home do usu rio corrente Dica Para ver o diret rio de trabalho corrente use pwa c t tulo Define o t tulo de qualquer tabela que seja exibida como resultado de uma consulta ou remove a defini o deste t tulo Este comando equivalente ao pset titlet tulo O nome deste comando deriva de cap tion t tulo porque anteriormente s era usado para definir o t tulo de uma tabela em HTML connect or ic nome bd nome do usu rio Estabelece a conex o para um banco de dados e ou nome de usu rio novo A conex o anterior fechada Se o nome bd for h fen ent o assumido o nome do banco de dados corrente Seo nome do usu rio for omitido ent o o nome do usu rio corrente assumido Como regra especial Yconnect sem nenhum argumento conecta ao banco de dados padr o como o usu rio padr o da mesma forma que aconteceria se o psql fosse executado sem argumentos Se a tentativa de conex o falhar nome de usu rio errado acesso negado etc a conex o anterior ser mantida se e somente se o psql estiver no modo interativo Ao executar um script n o inter
326. ser qualificado pelo esquema CASCADE RESTRICT Estas palavras chave n o produzem nenhum efeito uma vez que n o h depend ncias em convers es Notas Use o comando CREATE CONVERSION para criar uma convers o definida pelo usu rio Os privil gios exigidos para remover uma convers o podem mudar em vers es futuras Exemplos Para remover a convers o chamada minha conversao DROP CONVERSION minha conversao Compatibilidade O comando DROP CONVERSION uma extens o do PostgreSQL N o existe o comando DROP CONVERSION no SQL99 DROP CONVERSION Consulte tamb m CREATE CONVERSION DROP DATABASE Nome DROP DATABASE remove um banco de dados Sinopse DROP DATABASE nome Entradas nome O nome do banco de dados existente a ser removido Sa das DROP DATABASE Mensagem retornada se o comando for executado com sucesso DROP DATABASE cannot be executed on the currently open database N o poss vel estar conectado ao banco de dados que se deseja remover Conecte se ao banco de dados template1 ou a qualquer outro banco de dados e execute este comando novamente F4 DROP DATABASE may not be called in a transaction block Antes de executar este comando deve se concluir a transa o em andamento Descri o O comando DROP DATABASE remove as entradas do cat logo para um banco de dados existente e remove o diret rio contendo os dados Som
327. somente especifica as duas formas COMMIT e COMMIT WORK Fora isso a compatibilidade total COPY Nome COPY copia dados entre arquivos e tabelas Sinopse COPY tabela coluna FROM nome do arquivo stdin WITH BINARY OIDS DELIMITER AS delimitador NULL AS cadeia de caracteres nula 1 COPY tabela coluna TO nome do arquivo stdout WITH BINARY OIDS DELIMITER AS delimitador NULL AS cadeia de caracteres nula 1 Entradas table O nome opcionalmente qualificado pelo esquema de uma tabela existente coluna Uma rela o opcional das colunas a serem copiadas Se nenhuma rela o for fornecida s o usadas todas as colunas nome do arquivo O nome do arquivo de entrada ou de sa da no Unix junto com o caminho absoluto stdin Especifica que a entrada vem do aplicativo cliente stdout Especifica que a sa da vai para o aplicativo cliente BINARY Altera o comportamento da formata o dos campos fazendo todos os dados serem escritos ou lidos no formato bin rio em vez de texto N o podem ser especificados DELIMITER e NULL no modo bin rio OIDS Especifica a c pia do identificador interno do objeto OID de cada linha delimitador O caractere nico que separa os campos dentro de cada linha do arquivo COPY cadeia de caracteres nula A cadeia de caracteres que representa o valor
328. specificada Tamb m permite utilizar o comando COPY TO Para as seqii ncias este privil giotamb m permite o uso da fun o currval INSERT Permite incluir novas linhas INSERT na tabela especificada Tamb m permite utilizar o comando COPY FROM UPDATE Permite modificar os dados de qualquer coluna UPDATE da tabela especificada O comando SELECT FOR UPDATE tamb m requer este privil gio al m do privil gio SELECT Para as segii ncias este privil gio permite o uso das fun es nextval e setval DELETE Permite excluir linhas DELETE da tabela especificada RULE Permite criar regras para a tabela ou para a vis o Consulte o comando CREATE RULE REFERENCES Para criar uma restri o de chave estrangeira necess rio possuir este privil gio tanto na tabela que faz refer ncia quanto na que referenciada TRIGGER Permite criar gatilhos na tabela especificada Consulte o comando CREATE TRIGGER CREATE Para banco de dados permite que novos esquemas sejam criados dentro do mesmo Para esquema permite que novos objetos sejam criados dentro do mesmo Para mudar o nome de um objeto existente necess rio ser o dono do objeto e possuir este privil gio no esquema que o cont m TEMPORARY TEMP Permite criar tabelas tempor rias enquanto estiver usando o banco de dados EXECUTE Permite usar a fun o especificada e utilizar qualquer operador que seja implementado usando a fun o
329. ss o FOREIGN KEY nome da coluna REFERENCES tabela referenciada coluna referenci MATCH FULL MATCH PARTIAL ON DELETE a o ON UPDATE a o DEFERRABLE NOT DEFERRABLE INITIALLY DEFERRED INITIALLY IMMEDIATE Descri o O comando CREATE TABLE cria uma tabela nova inicialmente vazia no banco de dados atual O usu rio que executa o comando torna se o dono da tabela Se o nome do esquema for fornecido por exemplo CREATE TABLE meu esquema minha tabela ent o a tabela criada no esquema especificado sen o criada no esquema corrente aquele na frente do caminho de procura consulte CURRENT SCHEMA As tabelas TEMP s o criadas em um esquema especial portanto o nome do esquema n o pode ser fornecido para as tabelas tempor rias O nome da tabela deve ser diferente do nome de qualquer outra tabela segii ncia ndice ou vis o no mesmo esquema O comando CREATE TABLE tamb m cria automaticamente um tipo de dado que representa o tipo da tupla tipo estrutura correspondente a uma linha da tabela Portanto uma tabela n o pode ter o mesmo nome de um tipo de dado existente no mesmo esquema Uma tabela n o pode possuir mais de 1600 colunas Na pr tica o limite efetivo menor devido restri o do comprimento das tuplas As cl usulas opcionais de restri o
330. ss neste caso Op es O vacuumdb aceita os seguintes argumentos de linha de comando d nome bd dbname nome bd Especifica o nome do banco de dados a ser limpo ou analisado Se n o for especificado e a ou a11 n o for usado o nome do banco de dados obtido a partir da vari vel de ambiente PGDATABASE Se esta vari vel n o estiver definida ent o o nome do usu rio especificado para a conex o usado a all Limpa analisa todos os bancos de dados e echo Ecoa os comandos que o vacuumdb gera e envia para o servidor E f bl Executa a limpeza completa full 72 vacuumdb q quiet N o exibe resposta t tabela coluna 1 table tabela coluna 1 Limpa ou analisa somente a tabela Os nomes das colunas s podem ser especificados se a op o analyze tamb m for especificada Dica Se forem especificadas as colunas a serem analisadas provavelmente ser necess rio fazer o escape 1 dos par nteses para a shell V verbose Exibe informa es detalhadas durante o processamento zZ analyze Calcula as estat sticas a serem utilizadas pelo otimizador O vacuumdb tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o h hospedeiro host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soq
331. stante s o notificados e cada um por sua vez notifica o aplicativo cliente ao qual est conectado Consulte a discuss o do comando NOTIFY para obter mais informa es Um processo servidor pode cancelar seu registro para uma dada condi o de notifica o usando o comando UNLIST servidor EN Os registros de escuta de um processo servidor s o automaticamente removidos quando o processo encerra sua execu o O m todo que o aplicativo cliente deve usar para detectar eventos de notifica o depende da interface de progra ma o d e aplicativos APT do PostgreSQL sendo usada Usando a biblioteca libpq b sica o aplicativo executa o comando LISTEN como um comando SQL comum e depois passa a chamar periodicamente a rotina PQnotifies para descobrir se algum evento de notifica o foi recebido Outras interfaces como a libpgtcl fornecem m todos LISTEN de n vel mais alto para tratar os eventos de notifica o na verdade usando a libpgtcl o programador do aplicativo n o precisa nem executar o comando LISTEN ou UNLISTEN diretamente Consulte a documenta o da biblioteca sendo usada para obter mais detalhes O comando NOTIFY cont m uma discuss o mais extensa da utiliza o do comando LISTEN e do comando NOTIFY Notas nome pode ser qualquer cadeia de caracteres v lida como um nome n o precisa corresponder ao nome de qual quer tabela existente Se nome notifica o estiver entre aspas
332. ste erro ocorre quando o cursor n o declarado dentro de um bloco de transa o Descri o O comando DECLARE permite ao usu rio criar cursores os quais podem ser usados para buscar de cada vez um pequeno n mero de linhas de uma consulta grande Os cursores podem retornar dados tanto no formato texto quanto bin rio usando o comando FETCH Os cursores normais retornam os dados no formato texto em ASCII ou outro esquema de codifica o depen dendo de como o servidor PostgreSQL foi compilado Como os dados s o armazenados nativamente no formato bin rio o sistema necessita fazer uma convers o para produzir o formato texto Adicionalmente o formato texto geralmente possui um tamanho maior do que o formato bin rio correspondente Quando a informa o retorna na forma de texto o aplicativo cliente pode precisar converter para o formato bin rio para manipul la Os cursores bin rios retornam os dados na representa o bin ria nativa Por exemplo se uma consulta retornar o valor um de uma coluna inteira ser recebida a cadeia de caracteres 1 com o cursor padr o enquanto que o cursor bin rio retornaria um valor de 4 bytes igual a control A A Os cursores bin rios devem ser usados com cuidado Aplicativos do usu rio como o psdl n o est o atentos a cursores bin rios esperando que os dados cheguem no formato texto A representa o da cadeia de caracteres arquiteturalmente neutra enquanto que a rep
333. suporte do m todo de acesso do ndice para a fun o associada com a classe de operadores R ECH ECK CREATE OPERATOR CLASS nome DEFAULT FOR TYPE tipo de dado USING m todo de acesso AS OPERATOR n mero da estrat gia identificador do operador tipo tipo FUNCTION n mero de suporte nome da fun o tipos dos par metros CREATE OPERATOR CLASS nome da fun o O nome opcionalmente qualificado pelo esquema da fun o que o procedimento de suporte do m todo de acesso do ndice para a classe de operadores tipos dos par metros Os tipos de dado dos par metros da fun o tipo de armazenamento O tipo de dado realmente armazenado no ndice Normalmente o mesmo tipo de dado da coluna mas alguns m todos de acesso de ndice somente GIST nesta data permitem que seja diferente A cl usula STORAGE deve ser omitida a menos que o m todo de acesso do ndice permita o uso de um tipo diferente Sa das CREATE OPERATOR CLASS Mensagem retornada se a classe de operadores for criada com sucesso Descri o O comando CREATE OPERATOR CLASS define a nova classe de operadores nome Uma classe de operadores define como um tipo de dado espec fico pode ser usado com um ndice A classe de operadores especifica que certos operadores ir o preencher pap is particulares ou estrat gias para este tipo de dados e este m todo de acesso A classe d
334. t rio de dados m s mart flast i mmediate pg ct1 restart w s D diret rio de dados m s mart f ast i mmediate o op es pg ctl reload s D diret rio de dados pg ctistatus D diret rio de dados Descri o O pg ctl um utilit rio para iniciar parar ou reiniciar o postmaster o servidor PostgreSQL ou exibir o status de um postmaster ativo Embora o postmaster possa ser iniciado manualmente o pg ctl encapsula tarefas como redirecionar a sa da do 109 desconectar do terminal e do grupo de processos de maneira adequada al m de fornecer op es convenientes para uma parada controlada No modo iniciar start um novo postmaster lan ado O servidor inicia em segundo plano e a entrada padr o l de dev null A sa da padr o e o erro padr o s o ambos adicionados a um arquivo de log se a op o 1 for usada ou s o redirecionados para a sa da padr o do pg ctl n o o erro padr o Se o arquivo de 10g n o for definido a sa da padr o do pg ct deve ser redirecionada para um arquivo ou ser enviada para outro processo atrav s de um pipe como por exemplo para um programa para rota o de logs sen o o postmaster vai escrever sua sa da no terminal de controle do segundo plano e n o vai se desconectar do grupo de processo da shell No modo parar stop o postmaster que est executando no diret rio de dados especificado parado Tr s m todos diferentes de parada podem se
335. tado de uma consulta vai produzir resultados inconsistentes a menos que seja exigida uma ordena o previs vel dos resultados utilizando ORDER BY Isto n o um erro bug isto uma conseqii ncia do fato de que o SQL n o retorna os resultados de uma consulta em nenhuma ordem espec fica a n o ser que ORDER BY seja utilizado para definir esta ordem A cl usula FOR UPDATE FOR UPDATE OF nome da tabela A cl usula FOR UPDATE faz com que as linhas retornadas pela consulta sejam bloqueadas para atualiza o impedindo desta forma que sejam modificadas ou exclu das por outras transa es at que a transa o corrente termine ou seja as outras transa es que tentarem executar um UPDATE DELETE ou SELECT FOR UPDATE nestas linhas ser o bloqueadas at que a transa o corrente termine Tamb m se um UPDATE DELETE ou SELECT FOR UPDATE de alguma outra transa o j tiver efetuado o bloqueio de uma ou mais linhas o SELECT FOR UPDATE ir aguardar at que a outra transa o termine e ent o ir bloquear e retornar a linha atualizada ou nenhuma linha se a linha for exclu da Para uma discuss o mais detalhada consulte o cap tulo sobre concorr ncia no Guia do Usu rio Se forem especificados nomes de tabelas na cl usula FOR UPDATE ent o somente as linhas provenientes destas tabela s o bloqueadas todas as outras tabelas presentes no SELECT s o simplesmente lidas da forma usual A cl usula FOR UPDATE n o
336. tamente a mesma sa da que seria produzida se tudo tivesse sido digitado manualmente F separador field separator separador Usa separador como o separador de campos Equivale a pset fieldsep ou ao comando f h hospedeiro host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra usado como sendo o diret rio do soquete do dom nio Unix H html Ativa a sa da tabular HTML Equivale a Npset format html ou ao comando NH 1 s List Lista todos os bancos de dados dispon veis e depois termina Outras op es que n o sejam de conex o s o ignoradas Semelhante ao comando interno list o nome do arquivo output nome do arquivo Envia a sa da de todos os comandos para o arquivo nome do arquivo Equivale ao comando o p porta port porta Especifica a porta TCP IP ou por omiss o a extens o do arquivo de soquete do dom nio Unix local onde o postmaster est aguardando as conex es Por padr o o valor da vari vel de ambiente PGPORT ou se estiver definida a porta especificada durante a compila o usualmente 5432 P atribui o pset atribui o n o Permite especificar op es de impress o no estilo pset pela linha de comando Observe que aqui o nome e o valor devem estar separados pelo sinal de igual em vez de espa o Portanto para definir o formato de sa da como LaTeX deve se escrever P format latex
337. tentativa de otimizar fun es que s o executadas pela for a bruta Mais ainda as fun es podem possuir qualquer n mero de argumentos enquanto os operadores est o restritos a um ou dois Notas Consulte o cap tulo sobre operadores no Guia do Usu rio do PostgreSQL para obter mais informa es Consulte o comando DROP OPERATOR para excluir do banco de dados um operador definido pelo usu rio To give a schema qualified operator name in com op or the other optional arguments use the OPERATOR syntax for example COMMUTATOR OPERATOR myschema Utiliza o The following command defines a new operator area equality for the BOX data type CREATE OPERATOR LEFTARG caixa RIGHTARG caixa PROCEDURE area igual procedimento COMMUTATOR EGATOR l RESTRICT area restricao procedimento JOIN area juncao procedimento HASHES SORT1I lt lt lt SORT2 lt lt lt Uma vez que os operadores de ordfena o foram fornecidos MERGES est impl cito assume se que LTCMP e GTCMP sejam lt gt respectivament Compatibilidade SQL92 O comando CREATE OPERATOR uma extens o do PostgreSQL linguagem N o existe o comando CREATE OPERATOR no SQL92 CREATE OPERATOR CLASS Nome CREATE OPERATOR CLASS cria uma classe de operadores para ndices Sinops
338. ter que colocar contrabarra na frente de contrabarra tamb m porque as constantes de texto do SQL tamb m est o sujeitas a certas interpreta es Neste caso melhor preparar o arquivo externamente Como os dois pontos podem aparecer nos comandos a seguinte regra se aplica Se a vari vel n o est definida a sequ ncia de caracteres dois pontos nome n o mudada De qualquer maneira pode se colocar uma contra barra antes dos dois pontos para proteg lo de interpreta o A sintaxe de dois pontos para vari veis o padr o 64 psql SQL para as linguagens embutidas como o ecpg A sintaxe de dois pontos para faixa de matriz e transfor ma es de tipo s o extens es do PostgreSQL da o conflito Prompt Os prompts mostrados pelo psql podem ser personalizados conforme a prefer ncia As tr s vari veis PROMPT1 PROMPT2 PROMPT3 cont m cadeias de caracteres e seq ncias especiais de escape que descrevem a apar ncia do prompt O prompt 1 o prompt normal que mostrado quando o psql requisita um novo comando O prompt 2 mostrado quando mais entrada aguardada durante a entrada do comando porque o comando n o foi terminado por um ponto e v rgula ou um ap strofo n o foi fechado O prompt 3 mostrado quando se executa um comando SQL COPY e espera se que as tuplas sejam digitadas no terminal O valor da respectiva vari vel de prompt exibido literalmente exceto quando um sinal de percentagem
339. testdb gt ld minha tabela Table minha tabela Attribute Type Modifier first integer not null default 0 second text Neste ponto pode se desejar mudar o prompt para algo mais interessante testdb gt set PROMPT1I nm S SR H peterflocalhost testdb gt Vamos assumir que a tabela j esteja com dados e queremos v los peterflocalhost testdb gt SELECT FROM minha tabela first second 1 one 2 two 3 three 4 four 4 rows Esta tabela pode ser vista de forma diferente usando se o comando Ypset peterflocalhost testdb gt pset border 2 Border style is 2 peterflocalhost testdb gt SELECT FROM minha tabela first second 1 one 2 two 3 three 4 four 4 rows peterflocalhost testdb gt pset border 0 Border style is 0 peterflocalhost testdb gt SELECT FROM minha tabela first second 1 one 2 two 3 three 4 four 4 rows peterflocalhost testdb gt pset border 1 Border style is 1 peterftlocalhost testdb gt pset format unaligned Output format is unaligned peterflocalhost testdb gt Npset fieldsep 68 psql Field separator is peter localhost testdb gt pset tuples_only Showing only tuples peter localhost testdb gt SELECT second first FROM minha_tabela one 1 two 2 three 3 four 4 Como alternativa podem ser usados os comandos curtos peter localhost testdb gt la At x Output format is
340. to a pr pria contrabarra a nova linha e o caractere delimitador corrente As seguintes seqii ncias especiais de contrabarra s o reconhecidas pelo comando COPY FROM Segii ncia Representa No Backspace ASCII 8 NE Avan o de p gina ASCII 12 An Nova linha ASCII 10 NE Retorno do carro ASCII 13 Nt Tabula o ASCII 9 Ny Tabula o Vertical ASCH 11 Yd gitos A contrabarra seguida por um a tr s d gitos octais especifica o caractere com este c digo num rico Atualmente o COPY TO nunca gera uma segii ncia contrabarra d gitos octais mas as outras sequ ncias de con trabarra listadas acima s o utilizadas para estes caracteres de controle Nunca coloque uma contrabarra antes dos caracteres de dado N ou ponto sen o os dois ser o interpretados erroneamente como a cadeia de caracteres nula padr o e o marcador de fim dos dados respectivamente Qualquer outro caractere n o mencionado na tabela acima interpretado como representando a si pr prio fortemente recomendado que os aplicativos que geram dados para o COPY convertam os caracteres de nova linha e de retorno de carro presentes nos dados em seqii ncias n e r respectivamente No presente momento PostgreSQL 7 2 e vers es mais antigas poss vel se representar um retorno de carro nos dados sem nenhuma sequ ncia especial e representar a nova linha nos dados por uma contrabarra seguida por um caractere de nova
341. toda a sa da de depura o e de erros para o nome do arquivo Se o processo servidor estiver executando sob o postmaster ent o esta op o ser ignorada e a stderr herdada do postmaster ser usada Ignora os ndices do sistema ao varrer atualizar as tuplas do sistema O comando REINDEX para as tabelas ndices do sistema requer que esta op o seja utilizada Exibe a informa o de tempo e outras estat sticas ao final de cada comando til para efetuar medi es ou para definir o n mero de buffers S mem ria para ordena o Especifica a quantidade de mem ria a ser usada pelas ordena es e hashes internos antes de recorrer a ar quivos tempor rios em disco O valor especificado em kilobytes sendo o valor padr o 512 kilobytes Observe que para uma consulta complexa diversas ordena es e ou hashes podem ser executadas em paralelo podendo cada uma utilizar a quantidade de mem ria para ordena o kilobytes antes de come ar a escrever os dados em arquivos tempor rios Op es para o modo aut nomo banco de dados Especifica o nome do banco de dados a ser acessado Se for omitido o padr o o nome do usu rio Exibe todos os comandos Desativa o uso do caractere de nova linha como delimitador do comando Op es semi internas Existem v rias outras op es que podem ser especificadas usadas principalmente para fins de depura o que est o mostradas aqui somente para uso pelos desenvolve
342. tornadas pela consulta Descri o O comando SELECT retorna linhas de uma ou mais tabelas As linhas que satisfazem a condi o WHERE s o candidatas para sele o se WHERE for omitido todas as linhas s o candidatas Veja A cl usula WHERE Na verdade as linhas retornadas n o s o as linhas produzidas pelas cl usulas FROM WHERE GROUP BY HAVING diretamente mais precisamente as linhas da sa da s o formadas computando se as express es de sa da do SELECT para cada linha selecionada O pode ser escrito na lista de sa da como uma abrevia o para todas as colunas das linhas selecionadas Pode se escrever tamb m nome da tabela como uma abrevia o para as colunas provenientes de apenas uma tabela A op o DISTINCT elimina as linhas repetidas do resultado enquanto que a op o ALL o padr o retorna todas as linhas candidatas incluindo as repetidas DISTINCT ON elimina as linhas que correspondem a todas as express es especificadas mantendo apenas a primeira linha de cada conjunto de linhas repetidas As express es do DISTINCT ON s o interpretadas usando as mesmas regras dos itens do ORDER BY veja abaixo Observe que a primeira linha de cada conjunto n o pode ser prevista a menos que ORDER BY seja usado para garantir que a linha desejada apare a primeiro Por exemplo E SELECT DISTINCT ON local local data condicao FROM tb1l condicao climatica ORDER BY local data DESC exib
343. transi o que n o seja estrita Se a fun o de transi o de estado n o for estrita ent o ser chamada incondicionalmente para cada valor da entrada devendo ser capaz de lidar com valores nulos da entrada e valores nulos de transi o Esta op o permite ao autor da fun o de agrega o ter pleno controle sobre os valores nulos Se a fun o final for declarada strict est o n o ser chamada quando o valor do estado final for nulo em vez disso um resultado nulo ser produzido automaticamente E claro que este apenas o comportamento normal de fun es estritas De qualquer forma a fun o final tem sempre a op o de retornar nulo Por exemplo a fun o final para avg retorna nulo quando n o h nenhum valor de entrada Notes Use o comando DROP AGGR Os par metros do comando CREA EGAT E para excluir fun es de agrega o T AGGREGAT E podem ser escritos em qualquer ordem e n o apenas na ordem mostrada acima Utiliza o Consulte o cap tulo sobre fun es de agrega o no Guia do Programador do PostgreSQL para ver exemplos completos sobre a sua utiliza o Compatibilidade SQL92 O comando CREATE AGGREGATI AGGR EGAT E no SQL92 E uma extens o do PostgreSQL linguagem N o existe o comando CREATE CREATE CAST Nome CREATE CAST cria uma transforma o definida pelo
344. tui o de qualquer outro comando Portanto pode se construir refer ncias interessantes como set foo something e obter soft links ou variable variables do Perl e do PHP respectivamente Desafortunadamente ou afortunadamente n o existe nenhuma maneira de se fazer qualquer coisa til com estas constru es Por outro lado set bar foo uma forma perfeitamente v lida de se copiar uma vari vel Se set for chamado sem um segundo argumento a vari vel simplesmente definida mas n o possui valor Para remover a defini o ou excluir a vari vel usa se o comando unset Os nomes das vari veis internas do psql podem consistir de letras n meros e sublinhados em qualquer ordem e em qualquer n mero deles Algumas vari veis regulares possuem tratamento especial pelo psql Elas indicam certas defini es de op es que podem ser mudadas em tempo de execu o alterando se o valor da vari vel ou representam algum estado do aplicativo Embora seja poss vel usar estas vari veis para qualquer outra finalidade isto n o recomendado uma vez que o comportamento do programa pode se tornar muito estranho e muito rapidamente Por conven o todas as vari veis com tratamento especial possuem todas as letras mai sculas e possivelmente n meros e sublinhados Para garantir a m xima compatibilidade no futuro evite estas vari veis Abaixo segue a lista de todas as vari veis com tratamento especial DBNAME
345. tura interna de cai xa fosse uma matriz contendo quatro float 4 poder amos escrever CREATE TYPE caixa INTERNALLENGTH 16 INPUT meu procedimento 1 OUTPUT meu procedimento 2 ELEMENT float4 o que permitiria o valor de um componente da caixa ser acessado atrav s do ndice Fora isso o tipo se comporta da mesma maneira que o anterior Este exemplo cria um tipo de objeto grande e o utiliza na defini o de uma tabela CREATE TYPE objeto grande INPUT lo filein OUTPUT lo fileout CREATE TYPE INTERNALLENGTH VARIABLE CREATE TABLE tbl grandes objetos id int4 obj objeto grande This example creates a composite type and uses it in a table function definition CREATE TYPE compfoo AS f1 int f2 text CREATE FUNCTION getfoo RETURNS SETOF compfoo AS SELECT fooid fooname FROM foo LANGUAGE Compatibilidade Este comando CREATE TYPE uma extens o do PostgreSQL Existe um comando CREATE TYPE no SQL99 que bastante diferente nos detalhes Consulte tamb m CREATE FUNCTION DROP TYPE Guia do Programador do PostgreSQL CREATE USER Nome CREATE USER cria uma conta de usu rio do banco de dados Sinopse CREATE USER nome do usu rio WITH op o 11 onde op o pode ser SYSID uid EN
346. u do em uma coluna declarada como NOT NULL Se a express o para cada coluna n o for do tipo de dado correto ser tentada uma transforma o autom tica de tipo necess rio possuir o privil gio INSERT na tabela para inserir linhas assim como o privil gio SELECT nas tabelas especificadas na cl usula WHERE Utiliza o Inserir uma nica linha na tabela filmes INSERT INTO filmes VALUES UA5S02 Bananas 105 1971 07 13 Com dia INTERVAL 82 minute No segundo exemplo mostrado abaixo a ltima coluna duracao foi omitida e portanto vai receber o valor padr o NULL INSERT INTO filmes codigo titulo did data prod tipo VALUES T 601 Yojimbo 106 DATE 1961 06 16 Drama No terceiro exemplo mostrado abaixo utilizado o valor DEFAULT para a coluna de data em vez de especificar um valor INSERT INTO filmes VALUES UA5S02 Bananas 105 DEFAULT Com dia INTERVAL 82 minute INSERT INTO films codigo titulo did data prod tipo VALUES T 601 Yojimbo 106 DEFAULT Drama Inserir uma nica linha na tabela distribuidores observe que somente a coluna nome est especificada portanto vai ser atribu do o valor padr o para a coluna diq que foi omitida INSERT INTO distribuidores nome VALUES Entrega R pida Inserir v rias linhas na tabela filmes a partir da tabela tmp INSERT INTO filme
347. ue nunca foram agrupadas n o s o tocadas O clusterdb um script envolt rio que usa o comando do servidor CLUSTER atrav s do terminal interativo do PostgreSQL psql N o existe diferen a efetiva entre agrupar bancos de dados atrav s deste ou de outro comando O psql deve ser encontrado pelo script e o servidor de banco de dados deve estar executando na m quina de destino Tamb m se aplicam os padr es definidos e as vari veis de ambiente dispon veis para o psql e para a biblioteca cliente libpg Pode ser necess rio o clusterdb se conectar v rias vezes ao servidor PostgreSQL solicitando a senha em cada uma das vezes E conveniente existir o aquivo SHOME pgpass neste caso Op es O clusterdb aceita os seguintes argumentos de linha de comando a all Agrupa todos os bancos de dados d nome bd dbname nome bd Especifica o nome do banco de dados a ser agrupado Se n o for especificado e a ou a11 n o for usado o nome do banco de dados obtido a partir da vari vel de ambiente PGDATABASE Se esta vari vel n o estiver definida ent o o nome do usu rio especificado para a conex o usado e echo Ecoa os comandos que o clusterdb gera e envia para o servidor clusterdb q quiet N o exibe resposta t tabela table tabela Agrupa apenas a tabela O clusterdb tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o h hospedeiro h
348. ue preservam as informa es entre tipos da mesma categoria geral Por exemplo a transforma o de int2 em int4 pode ser impl cita mas uma transforma o de float 8 em int 4 provavelmente s deve ser permitida para atribui o As transforma es entre tipos diferentes como text em int 4 melhor que sejam somente expl citas Para poder criar uma transforma o deve se ser o dono do tipo de dado de origem ou de destino Para criar uma transforma o binariamente compat vel necess rio ser um superusu rio esta restri o feita porque uma transforma o binariamente compat vel pode facilmente derrubar o servidor Par metros tipo de origem O nome do tipo de dado de origem da transforma o tipo de destino O nome do tipo de dado de destino da transforma o nome da fun o tipo do argumento A fun o utilizada para realizar a transforma o O nome da fun o pode ser qualificado pelo esquema Se n o for a fun o ser procurada no caminho O tipo do argumento deve ser id ntico ao tipo da origem e o tipo do resultado deve corresponder ao tipo de destino da transforma o WITHOUT FUNCTION Indica que o tipo de dado de origem e o tipo de dado de destino s o binariamente compat veis e por isso nenhuma fun o necess ria para realizar a transforma o AS ASSIGNMENT Indica que a transforma o pode ser chamada implicitamente em contextos de atribui o AS IMPLICIT Indica que a transfor
349. uete do dom nio Unix p porta port porta Especifica a porta Internet TCP IP ou o soquete do dom nio Unix local onde o servidor est aguardando as conex es U nome do usu rio username nome do usu rio Nome do usu rio para se conectar W password For a a solicita o da senha 73 vacuumdb Diagn sticos VACUUM O comando foi executado com sucesso vacuumdb Vacuum failed Aconteceu algum erro O vacuumdb apenas um script envolt rio Consulte o comando VACUUM e o aplicativo psql para ver uma discuss o detalhada das mensagens de erro e dos problemas poss veis Ambiente PGDATABASE PGHOST PGPORT PGUSER Par metros padr o para a conex o Exemplos Para limpar o banco de dados teste vacuumdb teste Para limpar e analisar para o otimizador o banco de dados chamado grande bd vacuumdb analyze grande bd Para limpar uma nica tabela chamada foo em um banco de dados chamado xyz zy e analisar uma nica coluna da tabela chamada bar para o otimizador vacuumdb analyze verbose table foo bar xyzzy Consulte tamb m VACUUM 74 HI Aplicativos para o servidor do PostgreSQL Esta parte cont m informa es de refer ncia para os aplicativos do servidor e utilit rios de suporte do PostgreSQL Estes comandos s s o teis quando executados no computador onde o servidor de banco de dados est instalado Outros programas utilit rios est o listados em R
350. uma tabela fict cia sem armazenamento subjacente e associa uma regra ON SELECT a esta tabela O sistema n o permite atualiza es na vis o porque sabe que n o existe uma tabela real Pode ser criada a ilus o de uma vis o atualiz vel definindo se regras para ON INSERT ON UPDATE e ON DELETE ou qualquer subconjunto destes comandos que for suficiente para atender as necessidades para substituir as a es de atualiza o na vis o por atualiza es apropriadas em outras tabelas Existe um problema quando se tenta utilizar regras condicionais para a atualiza o das vis es obrigat rio haver uma regra incondicional INSTEAD para cada a o que se deseja permitir na vis o Se a regra for condicional ou n o for INSTEAD ent o o sistema continuar rejeitando as tentativas de realizar uma a o de atualiza o porque poder tentar realizar a a o sobre a tabela fict cia em alguns casos Se for desejado tratar todos os casos v lidos atrav s de regras condicionais pode se simplesmente adicionar uma regra incondicional DO INSTEAD NOTH ING para garantir que o sistema sabe que nunca ser chamado para atualizar a tabela fict cia Em seguida devem ser criadas as regras condicionais como n o INSTEAD nos casos em que forem disparadas v o se adicionar s a es padr o INSTEAD NOTHING Notas E necess rio possuir uma concess o para defini o de regras na tabela para poder definir uma regra para a tabela Use o comando GRANT e
351. un o ser o usados para unir as tuplas requisitadas de cada tabela de entrada EXPLAIN A parte mais cr tica exibida o custo estimado da execu o da consulta que a estimativa feita pelo planejador sobre a dura o da execu o da consulta medida em unidade de acesso s p ginas do disco Na verdade dois n meros s o mostrados o tempo inicial anterior primeira tupla poder ser retornada e o tempo total para retornar todas as tuplas Para a maioria das consultas o tempo total o que interessa mas em contextos como os das subconsultas EXISTS o planejador escolhe o menor tempo inicial em vez do menor tempo total porque o executor p ra ap s ter obtido uma linha Al m disso se for limitado o n mero de tuplas a serem retornadas usando a cl usula LIMIT o planejador efetua uma interpola o apropriada com rela o aos custos finais para saber qual plano realmente o de menor custo A op o ANALYZE faz com que a consulta seja realmente executada e n o apenas planejada O tempo total de dura o gasto dentro de cada parte do plano em milissegundos e o n mero total de linhas realmente retornadas s o adicionados ao que normalmente mostrado Esta op o til para ver se as estimativas do planejador est o pr ximas da realidade Cuidado Tenha em mente que a consulta realmente executada quando a op o ANALYZE usada Embora o EXPLAIN despreze qualquer sa da que o SELECT possa produzir os outros efeito
352. ural registrada anterior mente chamada nome Notas O comando DROP PROCEDURAL LANGUACI E uma extens o do PostgreSQL linguagem DROP LANGUAGE Consulte o comando CREATE LANGUAGE para obter informa es sobre como criar linguagens procedurais Utiliza o Remover a linguagem PL Sample DROP LANGUAGE plsample Compatibilidade SQL92 N o existe o comando DROP PROCI r EDURAL LANGUAGI E no SQL92 DROP OPERATOR Nome DROP OPERATOR remove um operador definido pelo usu rio Sinopse DROP OPERATOR id tipo esquerdo NONE tipo direito NONE CASCADE RESTRICT Entradas id O identificador opcionalmente qualificado pelo esquema de um operador existente tipo esquerdo O tipo do argumento do lado esquerdo do operador deve ser escrito NONE se o operador n o possuir argu mento do lado esquerdo tipo direito O tipo do argumento do lado direito do operador deve ser escrito NONE se o operador n o possuir argumento do lado direito CASCADE Remove automaticamente os objetos que dependem do operador RESTRICT Recusa remover o operador se existirem objetos dependentes Este o padr o Sa das DROP OPERATOR Mensagem retornada se o comando for executado com sucesso ERROR RemoveOperator binary operator operador taking tipo esquerdo and tipo direito does not exist Esta mensagem ocorre quando o operador bin rio espec
353. ursor seja usado interativamente O SQL92 permite aos cursores embutidos ou modulares atualizar as informa es no banco de dados Todos os cursores do PostgreSQL s o apenas para leitura A palavra chave BINARY uma extens o do PostgreSQL DELETE Nome DELETE exclui linhas de uma tabela Sinopse DELETE FROM ONLY tabela WHERE condi o Entradas tabela O nome opcionalmente qualificado pelo esquema de uma tabela existente condi o Uma condi o de consulta do SQL que retorna as linhas a serem exclu das Consulte o comando SELECT para obter mais informa es sobre a cl usula WHERE Sa das DELETE contador Mensagem retornada se as linhas foram exclu das com sucesso O contador representa o n mero de linhas exclu das Se contador for 0 ent o nenhuma linha foi exclu da Descri o O comando DELE H E exclui as linhas que satisfazem a cl usula WHERE na tabela especificada Se a condi o cl usula WHERE estiver ausente o efeito a exclus o de todas as linhas da tabela O resultado vai ser uma tabela v lida por m vazia Dica O comando TRUNCATE uma extens o do PostgreSQL que fornece um mecanismo r pido para excluir todas as linhas de uma tabela DELETE Por padr o o DELETE exclui as linhas da tabela especificada e de todas as suas filhas Para atualizar somente a tabela especificada deve ser utilizad
354. usar o comando SET SESSION AUTHORIZATION Embora produza o mesmo efeito requer que o usu rio que for fazer a importa o do banco de dados a partir do arquivo de exporta o gerado seja um superusu rio Esta op o substitui a op o R X disable triggers disable triggers 2 Esta op o somente relevante quando ao se realizar uma importa o dos dados apenas Informa ao pg_restore para incluir comandos que desativam temporariamente os gatilhos da tabela de destino enquanto os dados s o recarregados Deve ser utilizado quando existem verifica es de integridade referencial ou outros gatilhos na tabela que n o se deseja utilizar durante a recarga dos dados Atualmente os comandos emitidos para disable triggers devem ser executados como um supe rusu rio Portanto tamb m deve ser fornecido o nome de um superusu rio com S ou de prefer ncia ser especificado use set session authorization e executar pg_restore como um superusu rio do Post greSQL O pg restore tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o h hospedeiro host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p porta Bort porta Especifica a porta Internet TCP IP ou o soquete do dom nio Unix local onde o servidor est aguardando as conex es
355. usu rio Sinopse CREATE CAST tipo de origem AS tipo de destino WITH FUNCTION nome da fun o tipo do argumento AS ASSIGNMENT AS IMPLICIT CREATE CAS tipo de origem AS tipo de destino WITHOUT FUNCTION AS ASSIGNMENT AS IMPLICIT Descri o O comando CREATE CAST cria uma nova transforma o A transforma o especifica como realizar a convers o entre dois tipos de dados Por exemplo H SE ECT CAST 42 AS text converte a constante inteira 42 para o tipo text chamando uma fun o especificada previamente neste caso text int4 Se nenhuma transforma o adequada existir a convers o falha Dois tipos de dado podem ser binariamente compat veis significando que podem ser convertidos um no outro livremente sem chamar qualquer fun o Requer que os valores correspondentes utilizem a mesma represen ta o interna Por exemplo os tipos text e varchar s o binariamente compat veis Por padr o a transforma o pode ser chamada somente por uma chamada expl cita ou seja uma constru o expl cita CAST x AS nome do tipo x nome do tipo ou nome do tipo x Se a transforma o for marcada como AS ASSIGNMENT ent o pode ser chamada implicitamente quando for atribu do um valor uma coluna com o tipo de dado de destino Por exemplo supondo se que foo f1 seja uma coluna do tipo text ent o a atribui o INSERT INTO foo f1 VALU
356. usu rio mi quiet N o exibe resposta O createuser tamb m aceita os seguintes argumentos de linha de comando para os par metros de conex o 24 dropuser h hospedeiro host hospedeiro Especifica o nome da m quina onde o servidor est executando Se o nome iniciar por uma barra considerado como sendo o diret rio do soquete do dom nio Unix p porta port porta Especifica a porta Internet TCP IP ou o soquete do dom nio Unix local onde o servidor est aguardando as conex es U nome do usu rio username nome do usu rio Nome do usu rio que se deseja conectar como n o o usu rio a ser removido W password For a a solicita o da senha usada para se conectar ao servidor e n o a senha do usu rio a ser removido Ambiente PGHOST PGPORT PGUSER Par metros padr o para a conex o Diagn sticos DROP USER O usu rio foi removido com sucesso dropuser deletion of user nome do usu rio failed Aconteceu algum erro O usu rio n o foi removido Havendo uma condi o de erro a mensagem de erro do servidor exibida Consulte o comando DROP USER e o aplicativo psql para ver as causas poss veis Exemplos Para remover o usu rio joel do servidor de banco de dados padr o dropuser joel DROP USER 25 dropuser Para remover o usu rio joel usando o postmaster na m quina eden porta 5000 com confirma o e vendo o comando utilizado
357. utra situa o em que o comando CLUSTI ER til s o os casos em que se usa o ndice para acessar v rias linhas da tabela Se for solicitada uma faixa de valores indexados de uma tabela ou um nico valor indexado possuindo CLUSTER muitas linhas que correspondam a este valor o comando CLUSTER ajuda porque quando o ndice identifica a p gina da primeira linha todas as outras linhas estar o provavelmente nesta mesma p gina reduzindo o acesso ao disco e acelerando a consulta Durante a opera o de agrupamento uma c pia tempor ria da tabela criada para conter os dados da tabela na ordem do ndice Tamb m s o criadas c pias tempor rias de cada ndice da tabela Portanto necess rio um espa o livre em disco pelo menos igual soma do tamanho da tabela mais os tamanhos dos ndices O comando CLUSTER preserva as concess es GRANT heran a ndices chaves estrangeiras e outras pro priedades relacionadas tabela Uma vez que o otimizador registra estat sticas sobre a ordem das tabelas aconselh vel executar o comando ANALYZE na tabela rec m agrupada sen o o otimizador poder fazer escolhas ruins no planejamento das consul tas Existe outra maneira de se agrupar os dados O comando CLUSTER reordena a tabela original na ordem do ndice especificado Este procedimento pode ser lento para tabelas grandes porque as linhas s o lidas da tabela na ordem do ndice e se a tabela n o estiver orde
358. vo especificado Se for omitido a sa da padr o usada F formato format formato Seleciona o formato da sa da O formato pode ser um dos seguintes P Produz um script SQL em um arquivo texto puro padr o Exporta um arquivo tar adequado para servir de entrada para o pg_restore Usando este formato de exporta o pode se reordenar e ou excluir elementos do esquema durante a restaura o do banco de dados Tamb m poss vel limitar quais dados s o importados durante a restaura o 32 pg dump Exporta um arquivo personalizado apropriado para servir de entrada para o pg restore Este o formato mais flex vel porque permite a reordena o da importa o dos dados assim como dos elementos do esquema Este formato tamb m comprimido por padr o ignore version mo Ignora a diferen a de vers o entre o pg_dump e o servidor de banco de dados O pg_dump pode tratar bancos de dados de vers es anteriores do PostgreSQL mas as vers es muito anti gas n o s o mais suportadas atualmente anteriores a 7 0 Esta op o deve ser utilizada se for necess rio desconsiderar a verifica o de vers o mas se o pg_dump falhar n o diga que n o foi avisado oids z0 Exporta os identificadores de objeto OIDs para todas as tabelas Esta op o deve ser usada quando a coluna OID referenciada de alguma maneira por exemplo em uma restri o de chave estrangeira Caso contr rio esta op
359. x es uma requisi o de conex o em modo texto puro n o conectado ao banco de dados feita emitindo o comando connect do psql Entretanto esta op o um instrumento bastante rudimentar porque faz o pg restore perder a informa o sobre o dono a menos que seja usada a op o x use set session authorization schema only Restaura somente o esquema defini es dos dados sem os dados Os valores das sequ ncias s o substitu dos S nome do superusu rio superuser nome do superusu rio Especifica o nome do superusu rio a ser usado para desativar os gatilhos Somente relevante quando disable triggers usado t tabela table tabela Restaura o esquema dados da tabela apenas 43 pg restore T gatilho trigger gatilho V Restaura a defini o do gatilho apenas verbose X Especifica o modo verboso no privileges no acl Impede a restaura o dos privil gios de acesso comandos GRANT REVOKE X use set session authorization use set session authorization Normalmente se para restaurar um arquivo de exporta o for necess rio trocar o usu rio corrente do banco de dados por exemplo para definir o dono correto do objeto ent o dever ser aberta uma nova conex o com o banco de dados o que poder requerer interven o manual por exemplo senhas Se for usada a op o X use set session authorization ent o o pg restore vai
360. xportar dados como INSERT o pg restore n o poder importar os dados usando o comando COPY Op es O pg restore aceita os seguintes argumentos de linha de comando As formas longas das op es est o dispon veis em algumas plataformas apenas nome do arquivo exportado Especifica a localiza o do arquivo de exporta o a ser restaurado Se n o for especificado a entrada padr o usada ma data only Importa somente os dados n o o esquema defini es dos dados gi t clean Exclui drop os objetos do banco de dados antes de cri los 41 reate pg_restore Cria o banco de dados antes de restaur lo Quando esta op o est presente o banco de dados designado por d usado apenas para executar o comando CREATE DATABASE inicial Todos os dados s o restaurados no banco de dados cujo nome aparece no arquivo de exporta o d nome bd dbname nome bd Conecta ao nome bd e restaura diretamente no banco de dados Os objetos grandes somente podem ser restaurados usando uma conex o direta ao banco de dados f arquivo de sa da file arquivo de sa da Especifica o nome do arquivo contendo o script gerado ou contendo a listagem quando for utilizado com a op o 1 Por padr o a sa da padr o F formato format formato Especifica o formato do arquivo de exporta o N o necess rio especificar o formato porque o pg r
Download Pdf Manuals
Related Search
Related Contents
品 名 (品番) ミニグラ M-50N TC84100 - Velleman vers un - Toilettes Sèches Ecodomeo PDF version of this publication: (4.30 Manuel de l`utilisateur (FR) Manual de Instrucciones (SP Guide de dépannage de Novell eDirectory 8.8 Copyright © All rights reserved.
Failed to retrieve file