falo Evandro, vou testar e fazer os testes aqui, mais já ajudou sim.

Valeu,

Cristiano

On 1/12/07, Evandro Ricardo Silvestre <[EMAIL PROTECTED]> wrote:
> Cristiano,
>
> Ah sim, eh que pela pergunta do Osvaldo e pela sua resposta pensei que
> seria eternamente!
>
> A uns 6 meses atrás tivemos um problema semelhante e optamos por
> resolver sem o Lock. Utilizamos um controle melhorado da transação e um
> gerenciamento de seções em um trigger. Está funcionando legal. Mas nossa
> arquitetura é bem diferente do que se vê por ai, não sei se resolveria
> seu problema.
>
> Dê uma olhada aqui http://pgdocptbr.sourceforge.net/pg80/mvcc.html, acho
> que o ITEM 12.3.2 é o que deseja! Tenha muito cuidado com DeadLock!
>
> Abaixo o exemplo da Trigger que bloqueia UPDATE na tabela
>
> CREATE OR REPLACE FUNCTION ft_teste () RETURNS trigger AS
> 'BEGIN
>     RETURN NULL; -- O retorno NULL faz com que o commit nao se efetive!
> END; '
> LANGUAGE 'plpgsql';
>
> CREATE TRIGGER tr_bu_teste
>      BEFORE UPDATE ON tabela_teste FOR EACH ROW
>      EXECUTE PROCEDURE ft_teste();
>
> Você pode alterar o return null por um Raise Exception e estourar uma
> mensagem de erro!
>
> []'s
>
> Evandro
>
> Cristiano Panvel wrote:
> > Evandro, na verdade nao precissaria ficar eternamente com o lock,
> > seria ate o usuario excutar o encerramento do pedido, depois esse dado
> > nao aparece mais na sua tela, mais o dado pode ficar entre 1 a dois
> > dias na tela.
> >
> > Mais se puder manda um exemplo aí, eu agradeço.
> >
> > Cristiano.
> >
> > On 1/12/07, Evandro Ricardo Silvestre <[EMAIL PROTECTED]> wrote:
> >
> >> Isso que você está querendo fazer é um pouco inseguro.
> >> Os locks feitos no banco ficam até o servidor ser reiniciado ou até
> >> estourar algum erro de DeadLock, a partir disso os registros são liberados.
> >>
> >> Não sei se existe alguma forma de fazer no Postgresql que um Lock fique
> >> eternamente!
> >>
> >> Eu faria uma Trigger Before Update que impossibilitaria a edição do
> >> registro. O que acha? Acho mais confiável que usar Lock, pelo menos
> >> dessa forma você tem o controle sobre o registro!
> >>
> >> Se você optar pela trigger posso escrever um exemplo.
> >>
> >> Att.
> >>
> >> Evandro
> >>
> >> Cristiano Panvel wrote:
> >>
> >>> Sim é isso mesmo Osvaldo. Eu lembro que em DB2 da IBM era possivel
> >>> fazer isso mais ja nao lembro mais nem como fazia, ja faz muito tempo.
> >>>
> >>> Cristiano
> >>>
> >>> On 1/11/07, Osvaldo Kussama <[EMAIL PROTECTED]> wrote:
> >>>
> >>>
> >>>> Cristiano Panvel <[EMAIL PROTECTED]> escreveu:
> >>>>  pessoal, existe alguma forma no postgresql, de eu efetuar um lock no
> >>>> registro, por exemplo:
> >>>> o usuario alterou um determinado dado X, e ele nao pode mais alterar o
> >>>> dado novamente, gostaria de saber se posso controlar isso pelo banco e
> >>>> nao pela aplicacao em si.
> >>>>
> >>>>
> >>>>
> >>>> Vamos ver se entendi: eu sou um usuário do bd e alterei um determinado 
> >>>> campo
> >>>> de um registro de uma tabela, portanto nunca mais vou poder alterar este
> >>>> mesmo campo deste registro. É isso? Mesmo que daqui a um mês, um ano?
> >>>> Qualquer outro usuário pode alterar este mesmo campo mas a partir daí 
> >>>> entra
> >>>> na regra da proibição?
> >>>>
> >>>> Se for isso creio que terá que implementar em sua aplicação. *EU* não
> >>>> conheço nada parecido no PostgreSQL.
> >>>>
> >>>> Se entendi errado por favor explique-se melhor.
> >>>>
> >>>> []s
> >>>> Osvaldo
> >>>>
> >>>>
> >>>>
> >>>>  __________________________________________________
> >>>> Fale com seus amigos de graça com o novo Yahoo! Messenger
> >>>> http://br.messenger.yahoo.com/
> >>>> _______________________________________________
> >>>> Grupo de Usuários do PostgreSQL no Brasil
> >>>> Antes de perguntar consulte o manual
> >>>> http://pgdocptbr.sourceforge.net/
> >>>>
> >>>> Para editar suas opções ou sair da lista acesse a página da lista em:
> >>>> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
> >>>>
> >>>>
> >>>>
> >>>>
> >>> _______________________________________________
> >>> Grupo de Usuários do PostgreSQL no Brasil
> >>> Antes de perguntar consulte o manual
> >>> http://pgdocptbr.sourceforge.net/
> >>>
> >>> Para editar suas opções ou sair da lista acesse a página da lista em:
> >>> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
> >>>
> >>>
> >>>
> >>>
> >> _______________________________________________
> >> Grupo de Usuários do PostgreSQL no Brasil
> >> Antes de perguntar consulte o manual
> >> http://pgdocptbr.sourceforge.net/
> >>
> >> Para editar suas opções ou sair da lista acesse a página da lista em:
> >> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
> >>
> >>
> > _______________________________________________
> > Grupo de Usuários do PostgreSQL no Brasil
> > Antes de perguntar consulte o manual
> > http://pgdocptbr.sourceforge.net/
> >
> > Para editar suas opções ou sair da lista acesse a página da lista em:
> > http://pgfoundry.org/mailman/listinfo/brasil-usuarios
> >
> >
> >
>
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> Antes de perguntar consulte o manual
> http://pgdocptbr.sourceforge.net/
>
> Para editar suas opções ou sair da lista acesse a página da lista em:
> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
>
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a