Geração de sequenciais
15/01/2012
0
Boa noite Pessoal,
Atualmente estou migrando um banco de dados Firebird.. para SQLServer.
Tenho uma situacao que gostaria de uma orientacao, se possivel !...
la vai!!!
Veja:
TabelaXPTO
campo1 int - identity - PK
campo2 varchar(50)
campo3 datetime
campo4 ...
campo5 ...
campo6 int .. codigo da empresa - FK
campo7 int -- numero sequencial ( partindo do valor ex: 100 )
Preciso da seguinte Regra:
Para o COMPO7 preciso de um valor automatico sequencial que nao se repita por Empresa .
Exemplo sql:
Select MAX( campo7 )+ 1 from TABELAXPTO
Where
campo6 = :codigo da empresa X
( no Firebird utilizo o tal GENERATOR, onde é possivel criar varios AUTO Numeradores )
Importante: Esse numero nao sera atribuido para todos dos registros, ou seja nao posso usar o identity.
Solucoes!:??
Pensei em fazer um SELECT MAX + 1(utilizando trigger),
utilizando LOCK no registro ; mas nao foi uma solucao boa; esta gerando um Gargalo.....demora para incluir os registros..
sao muitas concorrencias. !!!!
Alguem tem alguma ideia de como posso trabalhar com esta situacao no SQLServer..
de uma forma segura.
Atualmente estou migrando um banco de dados Firebird.. para SQLServer.
Tenho uma situacao que gostaria de uma orientacao, se possivel !...
la vai!!!
Veja:
TabelaXPTO
campo1 int - identity - PK
campo2 varchar(50)
campo3 datetime
campo4 ...
campo5 ...
campo6 int .. codigo da empresa - FK
campo7 int -- numero sequencial ( partindo do valor ex: 100 )
Preciso da seguinte Regra:
Para o COMPO7 preciso de um valor automatico sequencial que nao se repita por Empresa .
Exemplo sql:
Select MAX( campo7 )+ 1 from TABELAXPTO
Where
campo6 = :codigo da empresa X
( no Firebird utilizo o tal GENERATOR, onde é possivel criar varios AUTO Numeradores )
Importante: Esse numero nao sera atribuido para todos dos registros, ou seja nao posso usar o identity.
Solucoes!:??
Pensei em fazer um SELECT MAX + 1(utilizando trigger),
utilizando LOCK no registro ; mas nao foi uma solucao boa; esta gerando um Gargalo.....demora para incluir os registros..
sao muitas concorrencias. !!!!
Alguem tem alguma ideia de como posso trabalhar com esta situacao no SQLServer..
de uma forma segura.
Fagron Tech
Curtir tópico
+ 0
Responder
Posts
16/01/2012
Marco Pinheiro
Tente assim:
SELECT CAMPO1, CAMPO2, CAMPO3, CAMPO4, CAMPO5, CAMPO6, ROW_NUMBER() OVER (PARTITION BY CAMPO6 ORDER BY CAMPO6), CAMPO7
FROM TABELA
SELECT CAMPO1, CAMPO2, CAMPO3, CAMPO4, CAMPO5, CAMPO6, ROW_NUMBER() OVER (PARTITION BY CAMPO6 ORDER BY CAMPO6), CAMPO7
FROM TABELA
Responder
10/02/2012
Decio Neto
ola tbm procuro uma solucao para este problema tenhu uma tabela de contadores e quando dou incluir as vezes 2 vendedores pegam o msm numero de pedido.
alguma ideia?
D7 banco sql server conexao bde
no datamodule tenhu uma table q pega o contador e passa pra o pedido...
alguma ideia?
D7 banco sql server conexao bde
no datamodule tenhu uma table q pega o contador e passa pra o pedido...
Responder
Clique aqui para fazer login e interagir na Comunidade :)