Duas sequences na mesma tabela

PostgreSQL

03/03/2005

Olá Pessoal,

Estou com uma dúvida e não sei se é possível ou não no postgresql. Posso criar duas sequences na mesma tabela?

Valeu!


Jupedra

Jupedra

Curtidas 0

Respostas

Bon Jovi

Bon Jovi

03/03/2005

Pode criar livremente. Mas qual é seu caso exatamente?

Segue exemplo genérico:

CREATE SEQUENCE seq_teste1 MINVALUE 1;
CREATE SEQUENCE seq_teste2 MINVALUE 1;

SELECT nextval(´seq_teste1´) as proximo_seq1;
SELECT nextval(´seq_teste2´) as proximo_seq2;


GOSTEI 0
Jupedra

Jupedra

03/03/2005

É o seguinte, eu tenho uma tabela onde a chave primária é composta por um tipo, um código e o ano. O tipo pode ser 1 ou 2 e para cada tipo eu tenho que gerar um código sequencial que precisa ser zerado a cada início de ano. Pensei que se eu tivesse dois sequenciais numa tabela, uma para gerar o código do tipo 1 e outra para gerar o código do tipo 2 seria uma solução?

Obrigada.


GOSTEI 0
Bon Jovi

Bon Jovi

03/03/2005

Nesse tipo de caso prefiro usar Select Max mesmo. Ou seja:
select coalesce(max(campo_B), 0) + 1 as novo_seq from tabela where campo_A = :campo_A
Onde o campo_B está sendo incrementado a partir do campo_A.


GOSTEI 0
Jupedra

Jupedra

03/03/2005

Ok, vou tentar assim. Obrigada.


GOSTEI 0
Bon Jovi

Bon Jovi

03/03/2005

Ah, e crie índice para cada um desses campos separadamente, senão pode ficar lento qdo a base crescer.


GOSTEI 0
Jupedra

Jupedra

03/03/2005

Olha só, eu gostaria de saber se tem como criar duas sequences pro mesmo campo numa mesma tabela onde dependendo do caso eu gero uma sequence ou outra?


GOSTEI 0
Bon Jovi

Bon Jovi

03/03/2005

Explique melhor seu caso na prática. Como mostrei no primeiro exemplo vc pode criar sequences independente do campo ou tabela, atribuindo o próximo valor retornado da sequence onde desejar.


GOSTEI 0
Jupedra

Jupedra

03/03/2005

Consegui resolver conforme você me disse, estava fazendo confusões em relação a sequence. Criei duas sequences independentes e gero ela conforme o tipo e atribuo ao código. Esse problema está resolvido. Obrigada.

Juliana.


GOSTEI 0
POSTAR