João Paulo escreveu:
> Olá pessoal..
>  
> estou com o sequinte problema:
> eu defini uma sequencia para uma tabela e num dos campos da tabela eu 
> usei a clausula check para testar se o valor que vai para o campo é um 
> valor válido, o problema é que quando eu informo um valor inválido a 
> minha seqüência é incrementada, ou seja, quero que quando o valor para o 
> campo na clausula check seja invalido a minha sequencia não seja 
> alterada, por exmplo:
>  
> create sequence seq_teste start 1;
>  
> create table teste(campo1 int default nextval('seq_teste') not 
> null,campo2 varchar(30) null check campo2='campo2');
>  
> após o insert correto
>  
> insert into teste(campo2) values ('campo2');
>  
> campo1 campo2
> 1           teste
>  
> agora se eu faco (insert errado):
>  
> insert into teste(campo2) values ('campo3');
>  
> e depois faco
>  
> insert into teste(campo2) values ('campo2');
>  
> campo1 campo2
> 1           teste
> 3           teste
>  
> e na verdade em vez do 3 o valor da sequencia tinha q ser 2 q seria o 
> proximo valor valido.
>  


O comportamento observado é o que se espera para uma sequência. No 
momento do teste das condições ele já obteve o valor do campo1 
(sequência) e isto não é desfeito. Veja:
http://www.postgresql.org/docs/8.2/interactive/functions-sequence.html

[]s
Osvaldo

                
_______________________________________________________ 
Yahoo! Mail - Sempre a melhor opção para você! 
Experimente já e veja as novidades. 
http://br.yahoo.com/mailbeta/tudonovo/
 

_______________________________________________
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