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
