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