1.3.0 - postgresql

17
POSTGRESQL Conteúdo 1. POSTGRESQL.................................................... 1 2. Arquitetura Básica do PostgreSQL.............................1 3. Estrutura Física.............................................2 4. Estrutura Lógica.............................................3 5. Iniciando o Servidor.........................................4 6. Conexão com Postgresql.......................................4 7. Administrando Usuários e Privilégios.........................5 8. Transações...................................................5 9. BACKUPS......................................................6 10. VACUUM..................................................... 6 11. ANALYZE.................................................... 7 12. VIEWS...................................................... 8 13. Herança no Postgres..........................................8 14. Configuração Básica de Driver ODBC para PostgreSQL...........9 15. TRIGGERS.....................................................9 1.POSTGRESQL O PostgreSQL é um sistema de gerenciamento de banco de dados objeto-relacional (SGBDOR) baseado no POSTGRES. O PostgreSQL é uma SGBD relacional e orientado a objetos. É um software de livre distribuição se tem seu código fonte aberto. Oferece suporte a SQL de acordo com os padrões SQL92 / SQL99. Em termos de recurso pode ser comparado aos melhores bancos de dados comerciais existentes, sendo inclusive superior em alguns aspectos, como ao introduzir conceitos do modelo objeto-relacional que hoje estão disponíveis em alguns bancos de dados comerciais.

Upload: wagner-freiria

Post on 06-Nov-2015

21 views

Category:

Documents


9 download

DESCRIPTION

PostgreSQL

TRANSCRIPT

POSTGRESQLContedo1.POSTGRESQL12.Arquitetura Bsica do PostgreSQL13.Estrutura Fsica24.Estrutura Lgica35.Iniciando o Servidor46.Conexo com Postgresql47.Administrando Usurios e Privilgios58.Transaes59.BACKUPS610.VACUUM611.ANALYZE712.VIEWS813.Herana no Postgres814.Configurao Bsica de Driver ODBC para PostgreSQL915.TRIGGERS9

1. POSTGRESQL O PostgreSQL um sistema de gerenciamento de banco de dados objeto-relacional (SGBDOR) baseado no POSTGRES.O PostgreSQL uma SGBD relacional e orientado a objetos. um software de livre distribuio se tem seu cdigo fonte aberto. Oferece suporte a SQL de acordo com os padres SQL92 / SQL99. Em termos de recurso pode ser comparado aos melhores bancos de dados comerciais existentes, sendo inclusive superior em alguns aspectos, como ao introduzir conceitos do modelo objeto-relacional que hoje esto disponveis em alguns bancos de dados comerciais.2. Arquitetura Bsica do PostgreSQL importante que haja a compreenso de sua arquitetura bsica. Quando aberta uma sesso do Postgres, trs processos so abertos. um processo daemon (postmaster); a aplicao do cliente (por exemplo, sua aplicao em PHP); um ou mais servidores de banco de dados (processo postgres);

Um nico processo postmaster gerencia os bancos de dados existentes em uma maquina.

As aplicaes do cliente(frontend) que desejam acessar determinado banco de dados fazem chamadas a uma requisio do usurio pela rede para o processo postmaster, que cria um novo processo-servidor(backend) e conecta o processo-cliente ao servidor(frontend e backend) se comuniam sem a interveno do postmaster.O Postgres usa um simples "processo por usurio" no modelo cliente/servidor. Uma sesso Postgres consiste nos seguintes processos cooperando entre si: POSTMASTER: processo servidor, responsvel pelas requisies de fluxo de dados, estabelecendo a comunicao direta entre uma aplicao cliente e o banco de dados; FRONTEND: uma aplicao cliente que pode ser uma ferramenta no modo caractere, um aplicativo grfico, um servidor Web, ou uma ferramenta especializada para manuteno do banco de dados; E um ou mais servidores backend do prprio banco de dados PostgreSQL.

O aplicativo cliente do usurio (frontend) que deseja executar operaes de banco de dados. Os aplicativos cliente podem ter naturezas muito diversas: o cliente pode ser uma ferramenta no modo caractere, um aplicativo grco, um servidor Web que acessa o banco de dados para mostrar pginas da Web, ou uma ferramenta especializada para manuteno do banco de dados.

O servidor PostgreSQL pode tratar mltiplas conexes concorrentes dos clientes. Para esta nalidade iniciado (fork) um novo processo para cada conexo. Deste ponto em diante, o cliente e o novo processo servidor passam a se comunicar sem a interveno do processo original postmaster. Portanto, o postmaster est sempre executando aguardando por novas conexes dos clientes, enquanto os processos servidores associados aos clientes surgem e desaparecem (tudo isso, obviamente, invisvel para o usurio sendo somente mencionado para car completo).PARSER

O estgio de anlise verifica o comando transmitido pelo programa aplicativo com relao correo da sintaxe, e cria a rvore de comando (Query Tree). A consulta SQL indexada e analisada de acordo com a linguagem SQL padro. A string de entrada analisada, retornando uma estrutura de consulta (Query Tree) para o executor. Erros de sintaxe so analisados nesta fase.REWRITER

Osistema de reescrita, tambm conhecida comoregras de sistemas recebe a rvore de comando criada pelo estgio de anlise, e procura por algumaregra(armazenada noscatlogos do sistema) a ser aplicada na rvore de comando. Realiza as transformaes especificadas nocorpo das regras.PLANNER

Oplanejador ou otimizadorrecebe a rvore de comando (reescrita) e cria oplano de comandoque ser a entrada doexecutor. Isto feito criando primeiro todos oscaminhospossveis que levam ao mesmo resultado. O caminho mais barato expandido em um plano completo para que o executor possa utiliz-lo.EXECUTOR

O executor caminha recursivamente atravs darvore do plano, e traz as linhas no caminho representado pelo plano. O executor faz uso dosistema de armazenamentoao varrer as relaes, realizaclassificaesejunes, avalia asqualificaese, por fim, envia de volta as linhas derivadas. essencialmente um mecanismo de canal de envio de informao sob demanda. Toda vez que o nodo do plano chamado deve enviar mais uma linha, ou relatar que no h mais linha a ser enviada.

Configurar o PostgresA maioria dos parmetros podem ser configurados a partir de 2 arquivos:

POSTGRESQL.conf: aqui so ajustadas as configuraes do PostgreSQL que sero utilizadas em todo o cluster (entenda aqui cluster como o conjunto de bases associadas uma nica instncia ou conjunto de processos do PostgreSQL). PG_HBA.conf: aqui so ajustadas configuraes de permisso de acesso e autenticao que sero utilizadas para todo o cluster, por base, por usurio ou role.

A verso 9.4 do PostgreSQL adicionou uma nova clusula SQL chamadaALTER SYSTEM. Com este comando, pode editar diretamente as configuraes do arquivo posqtgresql.conf.

3. Estrutura Fsica

A estrutura fsica de um SGBD trata da forma como os arquivos so criados, gerenciados e organizados fisicamente no sistema de arquivos do sistema operacional. Por sua vez, a estrutura lgica corresponde maneira como os objetos so organizados dentro dos bancos de dados.

A criao de um novo cluster (agrupamento) realizada pelo utilitrio initdb. Quando o programa executado, o mesmo cria os arquivos que definem o agrupamento. O argumento mais importante do comando initdb o pgdata, referenciado pelo argumento D.

-D : Especifica o diretrio onde o agrupamento de banco de dados ser armazenado (pgdata). -E : Seleciona a codificao do banco de dados modelo. Tambm ser a codificao padro para todos os bancos de dados criados posteriormente. --locale :Define o idioma padro para o agrupamento de banco de dados. Se esta opo no for especificada, o idioma herdado do ambiente onde o initdb est executando. -U : Especifica o nome de usurio do super-usurio do banco de dados.

O argumento pgdata diz aoinitdbo nome do diretrio que dever conter o novo agrupamento.

Parmetros de Configurao: postgresql.conf=> o principal arquivo de configurao do servidor. pg_hba.conf=> o arquivo de configurao para ohost-based authentication (hba). pg_ident.conf=> o arquivo de configurao para o username mapping.

4. Estrutura Lgica

TablespacesUma melhorias diz respeito ao gerenciamento dos discos, permitindo assim, selecionar os sistemas de arquivos que iro armazenar as informaes e objetos das bases de dados como esquemas, tabelas e ndices.O conceito segue o mesmo princpio do Oracle, com uma diferena: um tablespace no Oracle formado por um ou mais arquivos localizados em um determinado sistema de arquivos.J no PostgreSQL, um tablespace apenas um lugar, onde sero armazenados os objetos. Unidade lgica que altera armazenamento fsico; O Postgresql cria automaticamente dois Tablespaces para cada Cluster; Pg_global: contm o dicionrio de dados; Pg_default: armazena os objetos criados no banco de dados;

Normalmente, no h necessidade de montar mais de um tablespace por sistema de arquivo lgico, pois no podemos controlar o local dos arquivos individuais dentro do filesystem.

O uso do parmetro default_tablespace particularmente til quando desejamos que qualquer objeto criado, que no possua uma clusula TABLESPACE explcita, seja direcionado para um tablespace default da nossa escolha, e no do SGBD, controlando assim, a organizao dos objetos.

Existe tambm um parmetro no postgresql.conf chamado temp_tablespaces. Trata-se de uma lista de tablespaces que podem ser configurados para armazenar ndices e tabelas temporrias, bem como arquivos temporrios utilizados pelas operaes de ordenaes de grandes quantidades de dados.

5. Iniciando o Servidor

Antes que os usurios possam acessar o banco de dados, o servidor de banco de dados deve ser colocado em execuo. O programa servidor de banco de dados chama-se postmaster. O postmaster precisa saber onde se encontram os dados a serem utilizados. Isto feito atravs da opo -D. Portanto, a maneira mais simples de colocar o servidor em execuo usando que deixa o servidor processando em primeiro plano.

$ postmaster -D /usr/local/pgsql/data

Sem a opo -D o servidor tenta utilizar o diretrio de dados especificado na varivel de ambiente PGDATA. Se esta varivel tambm no existir, ento a inicializao falha.

Normalmente melhor executar o postmaster em segundo plano, e neste caso a sintaxe usual para o interpretador de comandos :

$ postmaster -D /usr/local/pgsql/data >arquivo_de_log 2>&1 &

importante armazenar as sadas stdout e stderr do servidor em algum lugar, conforme mostrado acima.

A sintaxe do interpretador de comandos pode se tornar entediante em pouco tempo. Por isso fornecido o programa pg_ctl para simplificar algumas tarefas.

pg_ctl start -l arquivo_de_log

Inicializa o servidor em segundo plano, e envia a sada para o arquivo de log especificado. A opo -D possui o mesmo significado para este programa que no postmaster.

6. Conexo com Postgresql

Primeiramente vamos testar a conectividade com o banco PostGreSQL usando o script abaixo:

pg_connect(); funo para conexo ao PostGreSQL. pg_close(); fecha a conexo ao banco. Banco: nome do banco de dados PostGreSQL Host: caminho do servidor ( no utilize 'localhost' e sim postgres01.DOMINIO ) Login: usurio utilizado na conexo ao banco de dados PostGreSQL Senha: senha do banco de dados PostGreSQL

7. Administrando Usurios e Privilgios

A DCL controla os aspectos de autorizao de dados e licenas de usurios para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados. Os nomes dos usurios de banco de dados so globais para todo o agrupamento de bancos de dados (e no apenas prprio de cada banco de dados).

Criando usurio no Postgresql

CREATE USER nome [ [ WITH ] opo [ ... ] ]

Remover usurioDROP USER nome_usurio

Alterar usuriosALTER USER nome [ [ WITH ] opo [ ... ] ]

Alterar o nome do usurioALTER USER nome RENAME TO novo_nome

Criar grupoCREATE GROUP nome_do_grupo;

Adicionar usurio ao grupoALTER GROUP nome_do_grupo ADD USER nome_do_usurio;

Criar um ROLECREATE ROLE nome [ [WITH] opo [...]];

Apagar um ROLEDROP ROLE [ IF EXISTS ] nome [, ...]

Concedendo e Revogando Privilgios no PostgreSQL

Quando um objeto do banco de dados criado, atribudo um dono ao mesmo. O dono o usurio que executou o comando de criao do objeto. Para mudar o dono de uma tabela, ndice, seqncia ou viso deve ser utilizado o comando ALTER TABLE. Por padro apenas o dono e o super-usurio pode fazer alguma coisa com o objeto.

Comando GRANT,possuiduasfuncionalidadesbsicas:conceder privilgios para um objeto do bancodedados(tabela,viso,seqncia,bancodedados, funo,linguagemprocedural, esquema eespaodetabelas)econcederoprivilgiodeser membrodeumpapel. Comando REVOKE necessriopara revogaralgunsprivilgiosdeacessoausurios ou grupos de usurios. ComandoparaalterarumdonodeumatabelanoPostgreSQL

ALTER TABLE nome_da_tabela OWNER TO novo_dono

8. Transaes

Transao - a realizao de um conjunto de comandos de uma s vez. Uma transao acontece por completo (todas as operaes) ou nada acontece. Tambm a transao deve garantir um nvel de isolamento das demais transaes, de maneira que as demais transaes somente enxerguem as operaes aps a transao concluda.

Caso haja um erro qualquer na transao ou falha no sistema o SGBR ir executar um comando ROLLBACK. Transaes so uma forma de dar suporte s operaes concorrentes, garantindo a segurana e integridade das informaes. Garantir que duas solicitaes diferentes no efetuaro uma mesma operao ao mesmo tempo.

O PostgreSQL trata a execuo de qualquer comando SQL como sendo executado dentro de uma transao.

Na verso 8 apareceram os SAVEPOINTS (pontos de salvamento) , que guardam as informaes at eles. Isso salva as operaes existentes antes do SAVEPOINT e basta um ROLLBACK TO para continuar comas demais operaes.

O PostgreSQL mantm a consistncia dos dados utilizando o modelo multiverso MVCC (Multiversion Com currency Control), que permite que leitura no bloqueie escrita nem escrita bloqueie leitura.

Uma transao dita um processo atmico, o que signica que ou acontecem todas as suas operaes ou ento nenhuma ser salva.

Isolamento de Transaes

O nvel de isolamento padro do PostgreSQL o Read Committed (leitura efetivada). Uma consulta SELECT realizada com este nvel perceber os registros existente no incio da consulta. Este o nvel mais exvel.

Existe tambm o nvel serializable, mais rigoroso. Os nveis Read uncommitted e Repeatable read so suportados, mas assumem a forma de um dos dois anteriores.

9. BACKUPS

Para efetuar backup e restore utilizamos o comando pg_dump em conjunto com o psql.

O pg_dump um utilitrio para fazer cpia de segurana de um banco de dados do PostgreSQL. So feitas cpias de segurana consistentes mesmo que o banco de dados esteja sendo utilizado concorrentemente. O pg_dump no bloqueia os outros usurios que esto acessando o banco de dados (leitura ou escrita).

O pg_dump no faz backup de objetos grandes (lo) por default. Caso desejemos tambm estes objetos no backup devemos utilizar uma sada no formato tar e utilizar a opo b.

Backup local de um nico banco: pg_dump -U usuario -d banco > banco.sql pg_dump -Ft banco > banco.tar

Restore de um banco local: psql -U usuario -d banco < banco.sql pg_restore -d banco banco.sql pg_restore -d banco banco.tar

-a --data-onlySalva somente os dados, no salva o esquema (definies de dado). Esta opo s faz sentido para o formato texto-puro. Para os formatos alternativos esta opo pode ser especificada ao chamar o pg_restore.

-b --blobsInclui os objetos grandes na cpia de segurana. Deve ser selecionado um formato de sada no-texto.

-c --cleanInclui comandos para remover (drop) os objetos do banco de dados antes dos comandos para cri-los.

-C --createInicia a sada por um comando para criar o banco de dados e conectar ao banco de dados criado (Com um script assim no importa qual banco de dados se est conectado antes de executar o script).

-d --insertsSalva os dados como comandos INSERT, em vez de COPY. Torna a restaurao muito lenta; sua utilizao principal para fazer cpias de segurana que possam ser carregadas em outros bancos de dados que no o PostgreSQL

-D --column-inserts --attribute-insertsSalva os dados como comandos INSERT explicitando os nomes das colunas (INSERT INTO tabela (coluna, ...)VALUES ...). Torna a restaurao muito lenta; sua utilizao principal para fazer cpias de segurana que possam ser carregadas em outros bancos de dados que no o PostgreSQL.

-f arquivo --file=arquivoEnvia a sada para o arquivo especificado. Se for omitido usada a sada padro.

-F formato format=formatoSeleciona o formato da sada. O formato pode ser um dos seguintes: --p Gera um arquivo de script SQL no formato texto-puro (padro) --t Gera um arquivo tar adequado para servir de entrada para o pg_restore. A utilizao deste formato de arquivo permite reordenar e/ou excluir objetos do banco de dados ao fazer a restaurao--c Gera um arquivo personalizado adequado para servir de entrada para o g_restore. Este o formato mais flexvel, porque permite a reordenao da restaurao dos dados, assim como das definies dos objetos. Tambm, este formato comprimido por padro.

Exemplo: pg_dump -Ft -b trt13 > tribunal.tar Fazer a cpia do banco grande trt13 para o arquivo em .tar chamado tribunal.tar.

10. VACUUM

O utilitrio VACUUM recupera espao em disco ocu pado pelos registros excludos e atualizados, atualiza os dados para as estatsticas usadas pelo planejador de consultas e tambm protege contra perda de dados quando atingir um bilho de transaes.

O comando VACUUM do PostgreSQL deve ser executado regularmente por diversos motivos:

1. Para recuperar o espao em disco ocupado pelas linhas atualizadas e removidas. 2. Para atualizar as estatsticas dos dados utilizadas pelo planejador de comandos do PostgreSQL. 3. Para proteger contra perda de dados muito antigos devido ao recomeo do ID de transao.

A forma padro do comando VACUUM pode executar em paralelo com as operaes normais do banco de dados (selees, inseres, atualizaes, excluses, mas sem modificao de definio de tabela).

Existem duas variaes do comando VACUUM.

Lazy vacuum limpeza preguiosa (lazy vacuum), ou simplesmente VACUUM, marca os dados expirados das tabelas para reutilizao posterior; no tenta recuperar o espao utilizado pelos dados expirados imediatamente. Portanto, o arquivo da tabela no encurtado, e o espao no utilizado no arquivo no devolvido ao sistema operacional. Esta variante do VACUUM pode ser executada simultaneamente com as operaes normais do banco de dados.

Vacuum Full. Esta forma utiliza um algoritmo mais agressivo para recuperar o espao consumido pelas verses de linha expiradas. Todo espao liberado pelo VACUUM FULL imediatamente devolvido ao sistema operacional. Infelizmente, esta variante do comando VACUUM obtm um bloqueio exclusivo de cada tabela enquanto esta processada pelo comando VACUUM FULL. Portanto, a utilizao freqente do comando VACUUM FULL pode ter um efeito extremamente negativo sobre o desempenho dos comandos simultneos no banco de dados.

Se for necessrio devolver espao em disco para o sistema operacional, pode ser utilizado ocomando VACUUM FULL

A prtica recomendada para a maioria das instalaes agendar o comando VACUUM para todo o banco de dados uma vez por dia em horrio de pouca utilizao,

O comando VACUUM FULL recomendado para os casos onde se sabe que foi excluda a maior parte das linhas da tabela e, portanto, o tamanho estvel da tabela pode ser reduzido substancialmente pela abordagem mais agressiva do comando VACUUM FULL.

Deve ser utilizado o VACUUM SIMPLES, e no o Vacuum Full, para recuperao rotineira de espao.

11. ANALYZE O Analyze coleta informaes precisas sobre o contedo das tabelas para o planejador de comandos do PostgreSQL poder gerar bons planos para os comandos. importante que as estatsticas estejam razoavelmente precisas, seno o desempenho do banco de dados poder ser degradado por planos mal escolhidos. O comando ANALYZE em tabelas especficas, e mesmo em colunas especficas da tabela. Portanto, existe flexibilidade para atualizar algumas estatsticas com mais freqncia que outras se for requerido pelo aplicativo.A prtica recomendada, para a maioria das instalaes, agendar a execuo do comando ANALYZE para todo o banco de dados uma vez por dia, em horrio de pouca utilizao; til sua combinao com a execuo do comando VACUUM todas as noites.

12. VIEWS Uma View consiste de uma consulta armazenada acessvel como uma tabela virtual em um banco de dados relacional ou um conjunto de documentos em um banco de dados orientado a documentos composta pelo conjunto de resultados de uma consulta ou um mapa e reduzir funes. Em termos mais simples a vista simplesmente uma tabela lgica que conecta automaticamente os pedaos de dados subjacentes. Na verdade, no duplicar ou persistirem os dados como o viram em uma forma lgica. So uma maneira simples de executar e exibir dados selecionados de consultas complexas em bancos. Em que elas so teis? Elas economizam grande quantidade de digitao e esforo e apresentam somente os dados que desejamos.Criar uma View.CREATE VIEW minha_viewASSELECT nome, salarioFROM FUNCIONARIO;

O comando criar uma VIEW nomeada de minha_view e poder ser utilizada nas buscas como uma tabela da seguinte forma:

SELECT * FROM minha_view;Assim, ser exibido somente o nome e o salrio para os usurios que tiverem acesso a essa VIEW.

View pg_settingFornece acesso aos parmetros do servidor de tempo de gerncia. essencialmente uma interface alternativa para o show e SET comandos. Ele tambm fornece acesso a alguns fatos sobre cada parmetro que no esto diretamente disponveis de SHOW, como valores mnimos e mximos.A Viso pg_settings que contm dados sobre os parmetros run-time do servidor..13. Herana no PostgresHerana um conceito de banco de dados orientado a objeto, que abre novas possibilidades interessantes ao projeto de banco de dados. Vamos criar duas tabelas: a tabela cidades e a tabela capitais. Como natural, as capitais tambm so cidades e, portanto, deve existir alguma maneira para mostrar implicitamente as capitais quando todas as cidades so mostradas.CREATE TABLE cidades ( nome text, populacao real, altitude int -- (em ps) ); CREATE TABLE capitais ( estado char(2) ) INHERITS (cidades);

Neste caso, as linhas da tabela capitais herdam todas as colunas (nome, populacao e altitude) da sua tabela ancestral cidades.14. Configurao Bsica de Driver ODBC para PostgreSQL

StandardDriver={PostgreSQL};Server=IP address;Port=5432;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

ANSIDriver={PostgreSQL ANSI};Server=IP address;Port=5432;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

15. TRIGGERSTriggers so procedimentos armazenados que so acionados por algum evento e em determinado momento. Na maioria dos bancos de dados estes eventos podem ser inseres (INSERT), atualizaes (UPDATE) e excluses (DELETE), e os momentos podem ser dois: antes da execuo do evento (BEFORE) ou depois (AFTER). E isso tambm vale para o PostgreSQL.

PostgreSQL as triggers so sempre associadas a funes de trigger.

O PostgreSQL possui dois tipos de triggers: triggers-por-linha e triggers-por-instruo. TRIGGER-POR-LINHA disparada uma vez para cada registro afetado pela instruo que disparou a trigger.

TRIGGER-POR-INSTRUO disparada somente uma vez quando a instruo executada.Funes de triggers so funes que no recebem nenhum parmetro e retornam o tipo trigger. Essas funes recebem uma estrutura chamada TriggerData, e esta passada internamente para a funo pelo PostgreSQL.O PostgreSQL disponibiliza duas variveis importantes para serem usadas em conjunto com as triggers-por-linha: NEW e OLD. A varivel NEW, no caso do INSERT, armazena o registro que est sendo inserido. No caso do UPDATE, armazena a nova verso do registro depois da atualizao.

A varivel OLD, no caso do DELETE, armazena o registro que est sendo excludo. No caso do UPDATE, armazena a antiga verso do registro depois da atualizao.Criando uma trigger

A sintaxe para a criao de uma trigger apresentada abaixo:CREATE TRIGGER nome { BEFORE | AFTER } { evento [ OR ... ] } ON tabela [ FOR [ EACH ] { ROW | STATEMENT } ] EXECUTE PROCEDUREnome_da_funo ()

NOME: o nome da trigger. BEFORE | after: determina se a funo ser chamada antes ou depois do evento. EVENTO: indica em que momento a trigger ser disparada. a trigger pode ser dispara antes ou depois de um evento de delete, update ou insert. TABELA: indica em qual tabela a trigger estar associada. ROW | STATEMENT: especifica se a trigger deve ser disparada uma vez para cada linha afetada pelo evento ou apenas uma vez por comando sql. se no for especificado nenhum dos dois, o padro for each statement. nome_da_funo: especifica a funo de trigger.

Ordem de execuo de triggersPodemos ter mais de uma trigger associada ao mesmo evento e momento, neste caso a ordem de execuo das triggers definida pela ordem alfabtica de seus nomes.Triggers recursivasSe uma funo de trigger executar comandos SQL, estes comandos podem disparar triggers novamente. Isto conhecido como cascatear triggers.

ALTERANDO UMA TRIGGERALTER TRIGGER nome ON tabela RENAME TO novo_nome.

NOME nome do gatilho existente a ser alterado. TABELA o nome da tabela onde o gatilho atua. NOVO_NOME o novo nome do gatilho.

EXCLUINDO UMA TRIGGER DROP TRIGGER nome ON tabela [ CASCADE | RESTRICT ]

NOME o nome do gatilho a ser removido. TABELA o nome da tabela para a qual o gatilho est definido. [ CASCADE | RESTRICT ] indica se ao remover a trigger vamos remover tambm todos os objetos que dependem dela (CASCADE) ou recusaremos sua excluso (RESTRICT).

Catlogo de Sistema do PostgreSQL

Nome do catlogoFinalidade

pg_aggregatefunes de agregao

pg_ammtodos de acesso de ndice

pg_amopoperadores de mtodo de acesso

pg_amprocprocedimentos de suporte de mtodo de acesso

pg_attrdefvalor padro das colunas

pg_attributecolunas de tabela ("atributos")

pg_castcasts (converses de tipos de dado)

pg_classtabelas, ndices, seqncias, vises ("relaes")

pg_constraintrestries de verificao, restries de unicidade, restries de chave primria, restries de chave estrangeira

pg_conversioninformaes sobre converso de codificao

pg_databasebancos de dados que fazem parte deste agrupamento de bancos de dados

pg_dependdependncias entre objetos do banco de dados

pg_descriptiondescries ou comentrios sobre os objetos do banco de dados

pg_groupgrupos de usurios do banco de dados

pg_indexinformaes adicionais sobre ndices

pg_inheritshierarquia de herana de tabela

pg_languagelinguagens para escrever funes

pg_largeobjectobjetos grandes

pg_listenersuporte a notificao assncrona

pg_namespaceesquemas

pg_opclassclasses de operador de mtodo de acesso de ndice

pg_operatoroperadores

pg_procfunes e procedimentos

pg_rewriteregras de reescrita dos comandos

pg_shadowusurios do banco de dados

pg_statisticestatsticas do planejador

pg_tablespaceespaos de tabelas do agrupamento de bancos de dados

pg_triggergatilhos

pg_typetipos de dado

pg_table_size(regclass)retornaro espao em disco utilizado pela tabela processo,

Questes:

1. A instruo SQL em PostgreSQL est mal formulada: CREATE VIEW Vista AS SELECT Hello Word;

a. por padro, o tipo de dado ser considerado indefinido (unknown) e a coluna ir utilizar o nome padro ?column?.i. sintaxe CREATE VIEW nome [ ( nome_da_coluna [, ...] ) AS comando.

2. O Comando. CREATE USER MAPPING FOR.a. Define um novo mapeamento de usuario para um servidor externo/estrangeiro Synopsis i. CREATE USER MAPPING FOR { user_name | USER | CURRENT_USER | PUBLIC } ii. SERVER server_name [ OPTIONS ( option 'value' [ , ... ] ) ]iii. CREATE USER MAPPING FOR bob SERVER foo OPTIONS (user 'bob', password 'secret');