Opa Fabricio,

Obrigado pela resposta! :)

Realmente, acho que matei uma mosca com uma bazuca, o SET CONSTRAINTS deve
ser o suficiente.

Explicando a situação: é uma operação de atualização de BD, onde preciso
garantir que todas as alterações (scripts) entrem ou sejam revertidas em
caso de erro. Estes scripts tem (misturado) DDL e DML, e ao usar uma
transação, sem alterar as constraints eu recebia erros como "ERROR: cannot
ALTER TABLE "content" because it has pending trigger events", e foi ai que
cheguei na solução que descrevi na mensagem anterior...

Estou usando a versão 9.4.5 (64 bit).





2016-03-15 13:41 GMT-03:00 Fabrízio de Royes Mello <fabri...@timbira.com.br>
:

> On 15-03-2016 12:52, Murilo Habermann Torquato wrote:
> > Fala pessoal,
> >
> > Para atualizar um banco de dados em produção (usando uma transação)
> > precisamos alterar todas as constraints do banco de dados de "DEFERRABLE
> > INITIALLY DEFERRED" para "DEFERRABLE INITIALLY IMMEDIATE".
> >
> > Para isso, usamos a instrução "ALTER TABLE xxxxxxxxxxx ALTER CONSTRAINT
> > ............."
> >
> > Após terminar a atualização, voltamos as constraints ao estado original
> > (DEFERRABLE INITIALLY DEFERRED), porém o seguinte erro começou a ser
> > lançado ao tentar excluir registros:
> >
> > /2016-03-15 08:41:33 BRT [15681-1] brerp@brerp ERRO:
> >  AfterTriggerSaveEvent() called outside of query/
> > /2016-03-15 08:41:33 BRT [15681-2] brerp@brerp CONTEXTO:  comando SQL
> > "DELETE FROM ONLY "adempiere"."m_inoutline" WHERE $1
> > OPERATOR(pg_catalog.=) "m_inout_id""/
> > /
> > /
>
> Não entendi o porque vc precisa fazer tudo isso em um deploy de banco,
> pois esse ALTER TABLE precisará obter um AccessExclusiveLock na tabela
> em questão, ou seja, nenhuma outra sessão conseguirá ler (select) ou
> escrever nela (insert/update/delete).
>
> Vc já tentou usar o SET CONSTRAINTS [1] ???
>
> Outro ponto, qual versão exata vc está utilizando (X.Y.Z)?
>
>
> > Dois pontos estranhos, que não consegui entender se fizemos algo de
> > errado, se tenho algum problema de configuração ou (acho muito dificil)
> > ser um erro do postgres, já que o ALTER CONSTRAINT é um tanto quanto
> "novo":
> >
> > 1 - se eu faço um DROP em todas as constraints do BD e depois ADD
> > novamente o erro desaparece, tudo volta a funcionar normalmente
> > 2 - se eu gero um dump do mesmo BD que está apresentando o erro, e
> > restauro em um novo BD, (no mesmo servidor) o erro não ocorre, tudo fica
> > normal
> >
>
> Esse é o comportamento esperado.
>
> Att,
>
>
> [1] http://www.postgresql.org/docs/current/static/sql-set-constraints.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
>



-- 
[image: devCoffee Sistemas de Gestão Integrada]
http://www.devcoffee.com.br <http://www.devcoffee.com.br/>

Murilo H. Torquato  / Diretor Técnico
devCoffee Business Solutions

muril...@devcoffee.com.br / (19) 993 247 735

Telefones:
  (19) 3555 2618 *||* (19) 3554 4031 *||* (11) 3522 3038

Endereço:
  Rua Paulo Rebessi, 665 - Cidade Jardim
  CEP: 13614-260 - Leme / SP

[image: Facebook]  <https://www.facebook.com/devcoffeebr>[image: Twitter]
<https://twitter.com/devcoffeebr>[image: Google Plus]
<https://plus.google.com/devcoffeebr>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a