Ao invés de usar a função max() você deve usar a funcao currval('nome_da_sequence')  (no seu caso, o nome da sequence deve ser tab1_cod_seq) para obter o valor gerado para o campo serial.

Em Seg, 2006-10-30 às 13:50 -0300, Osvaldo Rosario Kussama escreveu:
Magno Lima escreveu:
> Ola pessoal, tenho duas tabelas, tab1 e tab2. em tab2 há um campo que é 
> uma FK para tab1. Em tab1 um campo COD é um tipo serial automatico, 
> quero que tab 2 possua uma referencia aquele tab1.COD.
> 
> Eu faço assim: 1) insiro os dados em Tab1; 2) faco um select max(COD) em 
> Tab1; 2) insiro os dados em tab2 com o valor que peguei no passo 2.
> 
> Forcei um start transaction antes do passo 1 e o commit apenas após o 
> passo 2, com a ideia q o max(COD) nao pegue outro que nao o daquela 
> transacao. O codigo esta funcionando sem erros, quero saber se esta é 
> realmente a técnica correta.


Dê uma olhada nos itens 4.11.x da FAQ:
http://www.postgresql.org/docs/faqs.FAQ.html#item4.11.1
particularmente nas alternativas apresentadas no item 4.11.2.

[]s
Osvaldo

		
_______________________________________________________ 
O Yahoo! está de cara nova. Venha conferir! 
http://br.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

Responder a