Fórum Duvida Basica #298416
05/10/2005
0
tenho uma tabela com trigger auto incremento.
quando salvo esta tabela eu preciso posicionar o ponteiro no ultimo registro que acabou de ser salvo. e para gerar o codigo eu preciso dar um refresh ou close/open na tabela . no inicio funcionou tudo beleza, so que a tabela agora tem mais de 15.000 registros e demora uns 30 segundos para fazer esse processo. alguem tem uma sugestao nesse modelo com triger que tenha uma melhor performance? agradeco a todos.
Nanfilho
Curtir tópico
+ 0Posts
05/10/2005
Tnaires
Não entendo duas coisas:
1 - Qdo vc grava um novo registro, o DataSet não fica posicionado no registro inserido não?
2 - Pq vc precisa dar Close/Open pra gerar o código?
E qual banco vc tá usando? Se vc estiver usando Interbase / Firebird, tente usar um objeto Generator pra fazer a auto-numeração, ao invés de um trigger.
Abraços
Gostei + 0
05/10/2005
Adriano Santos
O [b:b540a4cab8]tnaires[/b:b540a4cab8] tem razão, que banco usa? Posta pra gente, se for Interbase / FireBird rapidinho a gente resolve.
Gostei + 0
05/10/2005
Nanfilho
o banco é interbase mesmo
tem generator tambem, e no before insert eu criei uma trigger que alimenta o codigo que é chave primaria ok?
entao tipo, quando dou o post la no delphi ele nao gera o novo codigo, eu preciso dar um refresh na query pra ela trazer o registro com o codigo criado, e quando vc faz isso o ponteiro vai para o primeiro registro, e eu preciso posicioná-lo no ultimo, ai dou um last, e esse processo ta meio lento. espero que tenham entendido, valeu
Gostei + 0
05/10/2005
Adriano Santos
O que você precisa é mostra o código que foi ou será gerado certo?
Então você pode fazer um esquema de retornar o código que o auto incremento vai gerar. Isso você consegue com uma Select no Generator:
SELECT GEN_ID(NOME_DO_GENERATOR, 0) AS CODIGO FROM RDB$DATABASE
Ai no resultado você pode acrescentar 1 para saber qual o proximo numero e etc.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)