Fórum Generator Em GDB Multi-Empresa #44691
06/06/2004
0
Como faço para incrementar o ´ID´ em um GDB multi_Emprea, sendo que cada tabela contem o codigo ´ID_EMPRESA e ID ´ como chave primaria. O problema é que quando se trada de um GDB para cada não ha problemas, pois cada banco possui o generator especifico de cada tabela. E no caso de um só banco, como faço esse incremento? Pois se utilizo um generator, e faça um cadasdo na empresa ´UM´ e o id foi igual a ´1´, se alterno de empresa ´TRES´ o próximo sera ´2´, perdendo a sequencia, sendo que na empresa TRES deveria ser ´1´. Como posso contornar esta situação???
[]s.
Siro
Curtir tópico
+ 0Posts
07/06/2004
Bon Jovi
Gostei + 0
07/06/2004
Siro
Más não é o adequado para cliente/server..
[]s.
Gostei + 0
07/06/2004
Vinicius2k
Porque não é adequado Siro? Não vejo como usar generators neste caso... e tbm se vc estivesse usando um outro banco de dados, não poderia usar campos autoinc, ou ID, por exemplo...
Além da sugestão do Bon Jovi que é boa, vc pode fazer uso de uma tabela auxiliar... é assim q eu utilizava nos tempos do clipper...
EMPRESA | IDCLIENTE 1 7 2 3 3 6
antes de gravar vc lê a última ID da empresa corrente + 1, grava, atualiza a tabela auxiliar e commita a transação...
é mais rápido q o select max... mas tem a desvantagem de trabalhar com duas tabelas...
T+
Gostei + 0
07/06/2004
Siro
No meu caso se fizer select max(id) existira trafego na rede, e quanto a tabela auxiliar, é assim que estou utilizando. Minha pergunta talves não tenha sido clara. Gostaria de saber se existe uma forma de utilizar ´Generator´ em vez de uma tabela axiliar, isso enconomiza código. Mas como vc mesmo disse ´Não [b:4f5dd9cb25]vejo como usar generators neste caso... ´[/b:4f5dd9cb25], e eu tambem não consigo, mas talvez existisse uma forma, e alguem com mais experiencia do que eu pudesse saber,por isso estou questinado. Eu não não estou querendo utilizar outro banco de Dados diferente do Interbase/Firebird, o que faço é que para cada empresa cadastrada existe um GDB. Ex (Emp_01, Em_02, etc) que o usuário escolhe e é feito a conexão referente a empresa selecionada , sendo que cada um tem as suas caracteristicas.
[]s.
Gostei + 0
07/06/2004
Vinicius2k
sim, mas de um único registro... vai aumentar apenas o trabalho do servidor, realizando a query... deste ponto de vista eu discordo...
eu quiz dizer que o conceito do generator, como simples autoinc, não se aplica... nem mesmo um legítimo autoinc não lhe serviria, entende?
acho q vc está certo em querer mudar... eu, particularmente, não considero uma boa prática e sempre trabalhei com um id de empresa na tabela...
acabo de voltar aqui porque fiquei com esta idéia na cabeça... pode existir uma alternativa...
um generator não é atrelado a uma tabela, logo, vc pode ter quantos generators quiser fazendo referencia a mesma tabela, porém armazenam valores diferentes...
então vc pode (é só uma teoria) ao cadastrar uma empresa, criar um generator_empresa999_tabelaXXX no banco para cada tabela que vc necessite... neste ponto vc pode criar uma stored procedure que faça o incremento do generator da empresa corrente, antes de gravar vc executa a SP pegando o valor de retorno dela para seu campo ID...
de qualquer forma vc vai ter algum (pequeno) tráfego na rede e trabalho no servidor...
acho q é uma idéia q pode ser trabalhada, ou talvez algum outro colega discorde da teoria...
T+
Gostei + 0
10/06/2004
Bon Jovi
Gostei + 0
16/06/2004
Rodrrs
vc pode a cada empresa que cadastrar criar um generator para ela
ex.
gen_empresa_01
Gen_empresa_02
Gen_empresa_03
quando vc quiser vc busca no select o valor de cada generator para a empresa
da um select busca somente o gen da empresa
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)