Duvida Basica
Olá pessoal. queria um help de voces pra um caso bem basico, mas que estou procurando uma melhor solução na performance.
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.
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
Curtidas 0
Respostas
Tnaires
05/10/2005
Olá
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
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
Adriano Santos
05/10/2005
Olá
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
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
Nanfilho
05/10/2005
foi mal, deixa eu esclarecer melhor
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
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
Adriano Santos
05/10/2005
foi mal, deixa eu esclarecer melhor
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
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