Em 2 de março de 2011 16:31, Fabrízio de Royes Mello
<[email protected]> escreveu:
>
> Em 2 de março de 2011 16:22, Fernando Wobeto <[email protected]>
> escreveu:
>>
>> o unico motivo que me fez pensar em usar o LOCK foi por exemplo que um
>> certo script PHP precise pegar o ultimo codigo +1 em uma tabela.
>> Após começa a fazer update em outras tabelas usando tal codigo como
>> referencia e no final de tudo gera realmente um registro na primeira tabela
>> com o codigo.
>> O problema é que podemos ter em outra estação algum usuário efetuando o
>> mesmo procedimento, então ele pegaria o mesmo codigo+1 e jogaria nos seus
>> registros esse código.
>> Qual seria a alterativa fora o LOCK?
>> Muito obrigado pela presteza.
>
> Se vc precisa que o número seja Único e Incremental então utilize Sequences
> [1]
> [1] http://www.postgresql.org/docs/current/interactive/functions-sequence.html
>

Para complementar e dar uma opção adicional, você pode usar um SELECT
FOR UPDATE para travar apenas registros.

Há casos de alguns contadores (como os de número de nota fiscal) onde
nenhum número pode ser perdido. No caso da sequence o número independe
da transação finalizar com um ROLLBACK ou COMMIT, sempre terá um
incremento a partir do momento que você obteve o valor com NEXTVAL.

-- 
TIAGO J. ADAMI
http://www.adamiworks.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a