Fórum autoinclemento Bds #239348
23/06/2004
0
Ola pessoal tenho umas duvidas.... quanto a ultilizar um campo do tipo inclemento no banco de dados.
nao sei se coloco um generetor,com uma triger na tabela ou crio uma function no delphi, para gerar o codigo da Aplicacao:
Obs: voces tem que levar em contas que este mesmo registro pode ser incluindo, por outro usuario..na rede ok...
exemplo.. usuario 1 vai cadastrar um cliente. e neste mesmo instante o usuario 2 tambem vai dar um insert na tabela..:ainda nao foi salvo
ai e o problema... se for um generetor ok.. mais e se o cliente resolver cancelar.. o registro que acabou de dar um insert.....: vai perder o numero da sequencia:
e se for pela aplicacao. quando voce dar um max. ou sei la o que para retornar o registro. vai que outro usuario tambem chamou um isert na tabela vai aparecer o ultimo registro. e depois que cliente salvar vai ser outro...:
este e um Sistema com banco de dados Syabase.
mais nao sei como vou fazer. para questao do codigo.
voces tem que ver que seu usar um max no banco sempre ele vai ler todos os regitros para retornar o maximo.. vai que a tabela esta com
1200.000.00 ai o bicho pega,,,
eu queria que todos.os amigos programadores.descuticen sobre este asunto..
vale qualquer ajuda..
cicerojosecruz@bol.com.br
nao sei se coloco um generetor,com uma triger na tabela ou crio uma function no delphi, para gerar o codigo da Aplicacao:
Obs: voces tem que levar em contas que este mesmo registro pode ser incluindo, por outro usuario..na rede ok...
exemplo.. usuario 1 vai cadastrar um cliente. e neste mesmo instante o usuario 2 tambem vai dar um insert na tabela..:ainda nao foi salvo
ai e o problema... se for um generetor ok.. mais e se o cliente resolver cancelar.. o registro que acabou de dar um insert.....: vai perder o numero da sequencia:
e se for pela aplicacao. quando voce dar um max. ou sei la o que para retornar o registro. vai que outro usuario tambem chamou um isert na tabela vai aparecer o ultimo registro. e depois que cliente salvar vai ser outro...:
este e um Sistema com banco de dados Syabase.
mais nao sei como vou fazer. para questao do codigo.
voces tem que ver que seu usar um max no banco sempre ele vai ler todos os regitros para retornar o maximo.. vai que a tabela esta com
1200.000.00 ai o bicho pega,,,
eu queria que todos.os amigos programadores.descuticen sobre este asunto..
vale qualquer ajuda..
cicerojosecruz@bol.com.br
Cicero
Curtir tópico
+ 0
Responder
Posts
23/06/2004
Vinicius2k
Cicero,
não posso lhe afirmar quanto ao sybase, mas com IB/FB um generator só é incrementado pela trigger no momento da gravação do registro... o que vc supõe q possa ocorrer, não ocorre...
Neste ponto o controle passa para suas mãos... se vc der um select max logo na abertura do form de inserção os riscos são grandes, mas se vc usar o evento BeforePost do DataSet, por exemplo, para atribuir o valor ao campo neste momento, eu diria que as chances de ocorrer algum problema são mínimas, pra não dizer nenhuma...
um select max numa tabela com 100.000 registros leva 1 segundo, num servidor modesto (minha máquina pessoal) e usando Firebird 1.5... aí fica a seu critério qual dos métodos usar...
T+
ai e o problema... se for um generetor ok.. mais e se o cliente resolver cancelar.. o registro que acabou de dar um insert.....: vai perder o numero da sequencia:
não posso lhe afirmar quanto ao sybase, mas com IB/FB um generator só é incrementado pela trigger no momento da gravação do registro... o que vc supõe q possa ocorrer, não ocorre...
e se for pela aplicacao. quando voce dar um max. ou sei la o que para retornar o registro. vai que outro usuario tambem chamou um isert na tabela vai aparecer o ultimo registro. e depois que cliente salvar vai ser outro...:
Neste ponto o controle passa para suas mãos... se vc der um select max logo na abertura do form de inserção os riscos são grandes, mas se vc usar o evento BeforePost do DataSet, por exemplo, para atribuir o valor ao campo neste momento, eu diria que as chances de ocorrer algum problema são mínimas, pra não dizer nenhuma...
voces tem que ver que seu usar um max no banco sempre ele vai ler todos os regitros para retornar o maximo.. vai que a tabela esta com
1200.000.00 ai o bicho pega,,,
um select max numa tabela com 100.000 registros leva 1 segundo, num servidor modesto (minha máquina pessoal) e usando Firebird 1.5... aí fica a seu critério qual dos métodos usar...
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)