Re: [pgbr-geral] Erro backup

2015-02-18 Por tôpico Matheus de Oliveira
2015-02-18 9:18 GMT-02:00 Bruno Pio brunocf...@gmail.com:

 pg_dump: lendo esquemas
 pg_dump: lendo tabelas definidas pelo usuário
 pg_dump: esquema com OID 2848468115 não existe


Isso não é um bom sinal. Suspeito que tenha alguma relação corrompida. Sabe
se teve algum problema de hardware nesse servidor ou algo fora do comum
recentemente?

Pode verificar o que retorna a seguinte consulta?

SELECT oid, relname, relfilenode, relkind
FROM pg_class
WHERE relnamespace = 2848468115;



 Obs.: Existem diversos schemas dentro desse banco, essa mesma mensagem
 ocorre quando tento fazer o backup de qualquer schema ou do banco todo.

 Pesquisando um pouco sobre o assunto encontrei no blog do Sr.Fabrízio de
 Royes Mello uma função em plpgsql para procurar OID no catálogo (
 http://fabriziomello.blogspot.com.br/2009_01_01_archive.html), porém esse
 OID 2848468115 não é encontrado.

 Nas pesquisas que fiz também encontrei sugestão de executar um REINDEX no
 banco, ao fazer isso me ocorre a mensagem:

 ERRO:  cabeçalho de página é inválido no bloco 2046 da relação
 base/10928130/13581760


Provavelmente é uma tabela corrompida (se fosse um índice o REINDEX
resolveria), pode verificar de qual se trata usando a seguinte consulta:

SELECT oid, relname, relfilenode, relkind
FROM pg_class
WHERE relfilenode = 13581760;

Suspeito que seja a mesma da consulta acima, mas temos que conferir.


O PostgreSQL (9.2.5) está instalado num servidor Linux e estou acessando
 por uma máquina Windows com o pgAdmin (1.16.1). O cliente não tem acesso ao
 Linux no momento, então não sei dizer mais detalhes e nem abrir o log,
 essas são mensagens que estão sendo retornadas no pgAdmin.



Já adianto que as consultas acima é para uma análise, apesar de conseguir
resolver remoto algumas coisas é bem provável que você irá precisar de
conectar no servidor remoto para garantir a consistência dos dados.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Erro backup

2015-02-18 Por tôpico Bruno Pio
Prezados, bom dia!

Estou com um problema ao tentar realizar o backup via pg_dump de um banco,
está me retornando a mensagem:

pg_dump: lendo esquemas
pg_dump: lendo tabelas definidas pelo usuário
pg_dump: esquema com OID 2848468115 não existe

Obs.: Existem diversos schemas dentro desse banco, essa mesma mensagem
ocorre quando tento fazer o backup de qualquer schema ou do banco todo.

Pesquisando um pouco sobre o assunto encontrei no blog do Sr.Fabrízio de
Royes Mello uma função em plpgsql para procurar OID no catálogo (
http://fabriziomello.blogspot.com.br/2009_01_01_archive.html), porém esse
OID 2848468115 não é encontrado.

Nas pesquisas que fiz também encontrei sugestão de executar um REINDEX no
banco, ao fazer isso me ocorre a mensagem:

ERRO:  cabeçalho de página é inválido no bloco 2046 da relação
base/10928130/13581760

Ao tentar rodar um VACUUM também ocorre esse mesmo erro do REINDEX.

O PostgreSQL (9.2.5) está instalado num servidor Linux e estou acessando
por uma máquina Windows com o pgAdmin (1.16.1). O cliente não tem acesso ao
Linux no momento, então não sei dizer mais detalhes e nem abrir o log,
essas são mensagens que estão sendo retornadas no pgAdmin.

Alguém saberia me dizer se é possível corrigir isso e, se sim, o que é
necessário fazer?

Obrigado
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Erro backup

2015-02-18 Por tôpico Bruno Pio
Matheus

Sobre a criação dessa view, sei que recentemente foram recriadas algumas
tabelas e populadas novamente nesse banco, se isso pode ter criado essa
view eu não sei, vou verificar como isso foi feito.

Sobre o pg_resetxlog, acredito ser muito difícil que alguém tenha feito
isso.



Matheus e Fabrízio

Assim que possível, vou seguir os passos descritos para correção da
pg_statistic e remoção do registro dessa view na pg_catalog. Eu posto o
resultado quando o fizer.

Muito obrigado por enquanto pela ajuda!
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Revoke describe objects

2015-02-18 Por tôpico Fabrízio de Royes Mello
On 18-02-2015 16:39, Matheus de Oliveira wrote:
 2015-02-18 16:32 GMT-02:00 Euler Thomas Garcia 
 euler.gar...@pocos-net.com.br:
 
 Pessoal, boa tarde,

 Como posso remover permissões de exibir objetos (estrutura das tabelas
 e código de triggers e funções).

 
 Não é possível, uma vez que o usuário tem acesso ao catálogo ele pode ver
 essas informações.
 

Creio (nao testei) que vc pode revogar as permissões de acesso ao
catálogo do usuário em questão e do public, mas isso tem um efeito
colateral indesejado que é o não funcionamento de algumas ferramentas
tipo: psql, pgadmin, phppgadmin, etc, pois estas precisam acessar
o catálogo para mostrar as informações de tabelas/campos/etc.

Também não testei, mas talvez poderemos fazer algo mais esperto na 9.5
com o Row-Level Security, criando uma POLICY [1] para não listar as
linhas da pg_catalog.pg_proc.

Att,

[1] http://www.postgresql.org/docs/devel/static/sql-createpolicy.html

-- 
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Revoke describe objects

2015-02-18 Por tôpico Fabrízio de Royes Mello
On 18-02-2015 17:12, Fabrízio de Royes Mello wrote:
 
 Também não testei, mas talvez poderemos fazer algo mais esperto na 9.5
 com o Row-Level Security, criando uma POLICY [1] para não listar as
 linhas da pg_catalog.pg_proc.
 

Desconsiderem... acabei de testar e não é possível criar uma POLICY para
o catálogo.

Att,

-- 
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Revoke describe objects

2015-02-18 Por tôpico Euler Thomas Garcia

Pessoal, boa tarde,

Como posso remover permissões de exibir objetos (estrutura das 
tabelas e código de triggers e funções).


Os usuários não tem permissão para executar as funções ou manipular 
tabelas, mas conseguem exibi-las (até mesmo o código das funções).


Gostaria de restringir isso. Alguém tem uma luz por favor?

Desde já obrigado.

--
Atenciosamente,
Euler Thomas Garcia
Rede Sul Mineira de Provedores
euler.gar...@pocos-net.com.br

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Revoke describe objects

2015-02-18 Por tôpico Matheus de Oliveira
2015-02-18 16:32 GMT-02:00 Euler Thomas Garcia 
euler.gar...@pocos-net.com.br:

 Pessoal, boa tarde,

 Como posso remover permissões de exibir objetos (estrutura das tabelas
 e código de triggers e funções).


Não é possível, uma vez que o usuário tem acesso ao catálogo ele pode ver
essas informações.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Erro backup

2015-02-18 Por tôpico Bruno Pio
Teste


 pg_dump: esquema com OID 2848468115 não existe


 Isso não é um bom sinal. Suspeito que tenha alguma relação corrompida.
 Sabe se teve algum problema de hardware nesse servidor ou algo fora do
 comum recentemente?

 Pode verificar o que retorna a seguinte consulta?

 SELECT oid, relname, relfilenode, relkind
 FROM pg_class
 WHERE relnamespace = 2848468115;


 Segundo o cliente não houve nada de anormal com seu servidor, mas
 solicitei que ele peça ao pessoal que cuida de sua infra para fazer um
 teste de memória e HD na máquina.


 Outros pontos a verificar são:

 - Algum parâmetro de configuração não seguro, como fsync=off ou
 full_page_writes=off?
 - Estava executando versões mais antigas anteriormente? Como foi feita a
 migração?

 Não me lembro de cabeça nenhum bug na 9.2 que causasse tais erros, mas
 vale a pena dar uma olhada nos release notes.


Sobre esses parâmetros, tanto o fsync como o full_page_writes  estão como
on, e não existia nenhuma versão mais antiga do PostgreSQL rodando, a
instalação já foi feita na versão 9.2. Vou dar uma olhada nos release
notes.





 Quanto a consulta, o retorno foi:

 13124322;nf_{ssdmed;13124322;v


 Esse é um nome bem estranho, e no caso é uma view. Tem como saber no
 histórico da aplicação algo sobre essa view? Está em uso? De onde veio? Etc.



Segundo o desenvolvedor, não é utilizada nenhuma view com esse nome, o que
ele disse que utiliza são cursores. O que existe é uma tabela com o nome de
 nf_issdmed.




 ERRO:  cabeçalho de página é inválido no bloco 2046 da relação
 base/10928130/13581760


 Provavelmente é uma tabela corrompida (se fosse um índice o REINDEX
 resolveria), pode verificar de qual se trata usando a seguinte consulta:

 SELECT oid, relname, relfilenode, relkind
 FROM pg_class
 WHERE relfilenode = 13581760;

 Suspeito que seja a mesma da consulta acima, mas temos que conferir.


 O retorno dessa consulta foi:

 2840;pg_toast_2619;13581760;t


 Ok. Então é uma tabela TOAST, precisamos então mapear a qual tabela esta
 pertence:

 SELECT oid, relname, relfilenode, relkind
 FROM pg_class
 WHERE reltoastrelid = 2840;


O retorno desse SELECT foi:

2619;pg_statistic;13581757;r

Por curiosidade, eu executei um SELECT * FROM pg_statistic; que me retornou
o mesmo erro relatado anteriormente:

** Error **

ERRO: cabeçalho de página é inválido no bloco 2046 da relação
base/10928130/13581760
SQL state: XX001

Que vi que significa Data Corrupted, é isso mesmo?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Erro backup

2015-02-18 Por tôpico Bruno Pio
Matheus, bom dia!

Obrigado pelo rápido retorno


 pg_dump: esquema com OID 2848468115 não existe


 Isso não é um bom sinal. Suspeito que tenha alguma relação corrompida.
 Sabe se teve algum problema de hardware nesse servidor ou algo fora do
 comum recentemente?

 Pode verificar o que retorna a seguinte consulta?

 SELECT oid, relname, relfilenode, relkind
 FROM pg_class
 WHERE relnamespace = 2848468115;


Segundo o cliente não houve nada de anormal com seu servidor, mas solicitei
que ele peça ao pessoal que cuida de sua infra para fazer um teste de
memória e HD na máquina.

Quanto a consulta, o retorno foi:

13124322;nf_{ssdmed;13124322;v

ERRO:  cabeçalho de página é inválido no bloco 2046 da relação
 base/10928130/13581760


 Provavelmente é uma tabela corrompida (se fosse um índice o REINDEX
 resolveria), pode verificar de qual se trata usando a seguinte consulta:

 SELECT oid, relname, relfilenode, relkind
 FROM pg_class
 WHERE relfilenode = 13581760;

 Suspeito que seja a mesma da consulta acima, mas temos que conferir.


O retorno dessa consulta foi:

2840;pg_toast_2619;13581760;t


Obrigado!
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Erro backup

2015-02-18 Por tôpico Fabrízio de Royes Mello
On 18-02-2015 14:18, Bruno Pio wrote:
 
 O retorno desse SELECT foi:
 
 2619;pg_statistic;13581757;r
 
 Por curiosidade, eu executei um SELECT * FROM pg_statistic; que me retornou
 o mesmo erro relatado anteriormente:
 
 ** Error **
 
 ERRO: cabeçalho de página é inválido no bloco 2046 da relação
 base/10928130/13581760
 SQL state: XX001
 
 Que vi que significa Data Corrupted, é isso mesmo?
 

Vc está com a tabela de estatísticas corrompida. A boa notícia é que ela
pode ser recriada, mas vc precisa fazer:

1) setar o parametro allow_system_table_mods = on no seu postgresql.conf

2) reiniciar o seu PostgreSQL

3) executar um TRUNCATE na pg_statistic, pois isso irá criar um novo
heap vazio

4) rode um ANALYZE na sua base, para popular novamente a pg_statistic

5) retire o parametro do item 1 do seu postgresql.conf

6) reinicie o seu PostgreSQL

Att,

-- 
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Erro backup

2015-02-18 Por tôpico Matheus de Oliveira
2015-02-18 14:18 GMT-02:00 Bruno Pio brunocf...@gmail.com:






 Quanto a consulta, o retorno foi:

 13124322;nf_{ssdmed;13124322;v


 Esse é um nome bem estranho, e no caso é uma view. Tem como saber no
 histórico da aplicação algo sobre essa view? Está em uso? De onde veio? Etc.



 Segundo o desenvolvedor, não é utilizada nenhuma view com esse nome, o que
 ele disse que utiliza são cursores. O que existe é uma tabela com o nome de
  nf_issdmed.


Isso pra mim é muito suspeito. Tem certeza de que não foi alguém criou uma
view com o nome errado, não conseguiu excluir e tentou fazer alguma
alteração direta no catálogo?

Outra coisa, usaram (pode ser há muito tempo) o pg_resetxlog nessa
instância?






 ERRO:  cabeçalho de página é inválido no bloco 2046 da relação
 base/10928130/13581760


 Provavelmente é uma tabela corrompida (se fosse um índice o REINDEX
 resolveria), pode verificar de qual se trata usando a seguinte consulta:

 SELECT oid, relname, relfilenode, relkind
 FROM pg_class
 WHERE relfilenode = 13581760;

 Suspeito que seja a mesma da consulta acima, mas temos que conferir.


 O retorno dessa consulta foi:

 2840;pg_toast_2619;13581760;t


 Ok. Então é uma tabela TOAST, precisamos então mapear a qual tabela esta
 pertence:

 SELECT oid, relname, relfilenode, relkind
 FROM pg_class
 WHERE reltoastrelid = 2840;


 O retorno desse SELECT foi:

 2619;pg_statistic;13581757;r

 Por curiosidade, eu executei um SELECT * FROM pg_statistic; que me
 retornou o mesmo erro relatado anteriormente:

 ** Error **

 ERRO: cabeçalho de página é inválido no bloco 2046 da relação
 base/10928130/13581760
 SQL state: XX001

 Que vi que significa Data Corrupted, é isso mesmo?



De fato é a mesma relação. Esse erro ocorre devido à tabela TOAST
corrompida. Felizmente é a pg_statistic, os dados dela podem ser recriados.

De qualquer forma sua base tem problemas de corrupção, eu recomendo você
tentar fazer um backup usando o pg_dump dessa instância inteira (todas as
bases). Faça o backup, depois remova tudo (rm -rf $PGDATA), recrie uma
instância vazia (initdb ou pg_createcluster) e restaure o backup. É de fato
a única forma de garantir que não há corrupção de dados.

Agora, para fazer o pg_dump você tem que se livrar dos problemas atuais,
quanto à pg_statistic eu imagino que não será um problema, já que os dados
dela não são incluídos no pg_dump. Quanto à view, essa sim pode ser um
problema. Primeiramente eu tentaria executar um REINDEX da pg_class, se
isso não funcionar, nos resta executar um DELETE na pg_class desse registro
especificamente (para isso você deverá se conectar como um superusuário e
habilitar o allow_system_table_mods).

**IMPORTANTE*:* execute imediatamente um backup físico, antes de tentar
qualquer atualização nas tabelas de catálogo ou qualquer intervenção manual.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com trigger

2015-02-18 Por tôpico Matheus de Oliveira
2015-02-18 12:30 GMT-02:00 Douglas Fabiano Specht douglasfabi...@gmail.com
:

 a trigger esta na tabela tabela movimento, e o delete é nela mesmo.
 se eu colocar no before e dentro de um bloco de transação dar rollback na
 aplicação a trigger será executada?
 exemplo

 begin
 insert na table X
 delete movimento(executa a trigger no before)
 update tabela Y(aqui ocorre um erro e um rollback)


Sim, vai ser executada mas o INSERT feito dentro da função de trigger vai
naturalmente ser desfeito. De qualquer modo isso não tem relação com o fato
de ser AFTER ou BEFORE, o mesmo se aplica à ambos.

Concordo com o Fabrízio, você queria ter criado uma trigger do tipo BEFORE.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com trigger

2015-02-18 Por tôpico Fabrízio de Royes Mello
On 18-02-2015 11:44, Douglas Fabiano Specht wrote:
 Bom dia Pessoal
 
 tenho uma trigger after insert or delete, postgres 9.4, que se for feito um
 delete eu preciso dar um insert em uma tabela com um join.
 até ai tudo certo, ocorre que não esta fazendo o insert, pois o select não
 deve estar retornado dados.
 
 if (TG_OP = 'DELETE') then
 insert into dah.wdados(codempresa, tipo, codigo, titular, nro, chave,
 celular, dataoperacao)
 select old.codempresa, 'CO', old.codigo, old.nome, old.acesso, old.chave,
 c.celular, CURRENT_TIMESTAMP
 from cadcliente c
 join movimento h on (c.codigo = h.codigo )
 where (h.chave = old.chave and h.codempresa=old.codempresa) ;
 return old;
   END IF;
 
 alguma dica ou segredo pra poder fazer esse join com where utilizando as
 colunas OLD?
 ou como eu poderia salvar o comando com seus valores? estou usando o
 debbuger do pgadmin, mas os valores dos campos não mostram.
 

Douglas,

Em qual tabela está essa trigger?? Lembre-se que o AFTER já considera a
operação efetivada, ou seja, se a sua query com JOIN precisa das tuplas
excluidas não serão retornadas. Me parece que vc precisa colocar esse
seu INSERT no BEFORE DELETE.

Att,

-- 
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com trigger

2015-02-18 Por tôpico Douglas Fabiano Specht
Em 18 de fevereiro de 2015 12:18, Fabrízio de Royes Mello 
fabri...@timbira.com.br escreveu:

 On 18-02-2015 11:44, Douglas Fabiano Specht wrote:
  Bom dia Pessoal
 
  tenho uma trigger after insert or delete, postgres 9.4, que se for feito
 um
  delete eu preciso dar um insert em uma tabela com um join.
  até ai tudo certo, ocorre que não esta fazendo o insert, pois o select
 não
  deve estar retornado dados.
 
  if (TG_OP = 'DELETE') then
  insert into dah.wdados(codempresa, tipo, codigo, titular, nro, chave,
  celular, dataoperacao)
  select old.codempresa, 'CO', old.codigo, old.nome, old.acesso, old.chave,
  c.celular, CURRENT_TIMESTAMP
  from cadcliente c
  join movimento h on (c.codigo = h.codigo )
  where (h.chave = old.chave and h.codempresa=old.codempresa) ;
  return old;
END IF;
 
  alguma dica ou segredo pra poder fazer esse join com where utilizando as
  colunas OLD?
  ou como eu poderia salvar o comando com seus valores? estou usando o
  debbuger do pgadmin, mas os valores dos campos não mostram.
 

 Douglas,

 Em qual tabela está essa trigger?? Lembre-se que o AFTER já considera a
 operação efetivada, ou seja, se a sua query com JOIN precisa das tuplas
 excluidas não serão retornadas. Me parece que vc precisa colocar esse
 seu INSERT no BEFORE DELETE.

 Att,

 --
Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Fabrizio,
a trigger esta na tabela tabela movimento, e o delete é nela mesmo.
se eu colocar no before e dentro de um bloco de transação dar rollback na
aplicação a trigger será executada?
exemplo

begin
insert na table X
delete movimento(executa a trigger no before)
update tabela Y(aqui ocorre um erro e um rollback)



-- 

Douglas Fabiano Specht
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] duvida com trigger

2015-02-18 Por tôpico Douglas Fabiano Specht
Bom dia Pessoal

tenho uma trigger after insert or delete, postgres 9.4, que se for feito um
delete eu preciso dar um insert em uma tabela com um join.
até ai tudo certo, ocorre que não esta fazendo o insert, pois o select não
deve estar retornado dados.

if (TG_OP = 'DELETE') then
insert into dah.wdados(codempresa, tipo, codigo, titular, nro, chave,
celular, dataoperacao)
select old.codempresa, 'CO', old.codigo, old.nome, old.acesso, old.chave,
c.celular, CURRENT_TIMESTAMP
from cadcliente c
join movimento h on (c.codigo = h.codigo )
where (h.chave = old.chave and h.codempresa=old.codempresa) ;
return old;
  END IF;

alguma dica ou segredo pra poder fazer esse join com where utilizando as
colunas OLD?
ou como eu poderia salvar o comando com seus valores? estou usando o
debbuger do pgadmin, mas os valores dos campos não mostram.


-- 

Douglas Fabiano Specht
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com trigger

2015-02-18 Por tôpico Fabrízio de Royes Mello
On 18-02-2015 23:02, Douglas Fabiano Specht wrote:
 obrigado Matheus e Fabrizio,
 neste caso entao de utilizar o before, e der um rollback, ele vai desfazer
 o insert mesmo que seja feito em outra tabela correto?
 

É isso ai meu guri... o PostgreSQL é ACID, então lembre-se do
A=Atomicidade, ou seja, ou faz tudo ou não faz nada... ;-)

E um INSERT/UPDATE/DELETE em uma tabela que tem um gatilho é uma
transação só... blz?

Att,

-- 
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] duvida com trigger

2015-02-18 Por tôpico Douglas Fabiano Specht
Em 18 de fevereiro de 2015 12:34, Matheus de Oliveira 
matioli.math...@gmail.com escreveu:


 2015-02-18 12:30 GMT-02:00 Douglas Fabiano Specht 
 douglasfabi...@gmail.com:

 a trigger esta na tabela tabela movimento, e o delete é nela mesmo.
 se eu colocar no before e dentro de um bloco de transação dar rollback na
 aplicação a trigger será executada?
 exemplo

 begin
 insert na table X
 delete movimento(executa a trigger no before)
 update tabela Y(aqui ocorre um erro e um rollback)


 Sim, vai ser executada mas o INSERT feito dentro da função de trigger vai
 naturalmente ser desfeito. De qualquer modo isso não tem relação com o fato
 de ser AFTER ou BEFORE, o mesmo se aplica à ambos.

 Concordo com o Fabrízio, você queria ter criado uma trigger do tipo BEFORE.

 Atenciosamente,
 --
 Matheus de Oliveira
 Analista de Banco de Dados
 Dextra Sistemas - MPS.Br nível F!
 www.dextra.com.br/postgres


 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


obrigado Matheus e Fabrizio,
neste caso entao de utilizar o before, e der um rollback, ele vai desfazer
o insert mesmo que seja feito em outra tabela correto?


-- 

Douglas Fabiano Specht
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral