[firebase-br] Pedido de opinião
Rogerio Calixto
roger.programador em gmail.com
Sex Out 30 14:00:34 -03 2009
Olá pessoal,
Estou estudando o Firebird e gostaria de opinião de vocês sobre algumas
questões
1)
Estou usando uma Trigger em conjunto com uma generator para criar um campo
autoincremental para as minhas Primaty Keys
Seto a Trigger como Before Insert da maneira abaixo:
BEGIN
IF (NEW.CODFORNEC IS NULL) THEN
NEW.CODFORNEC = GEN_ID(GEN_FORNEC, 1);
END
A minha dúvida: Qual o melhor método para fazer o controle autoincremental
Trigger ou Select Max() ?
2)
No caso da trigger acima toda vez que uma inserção não é aceita devido à
uma violação da integridade, o generator é incrementado da mesma
maneira e este código fica descartado
Tem como evitar isso ?
3)
Criei uma Tabela de movimentos para gravar entradas e saidas do estoque.
E uso um campo para espeficiar o tipo de lançamento: "E" ou "S".
Com este campo eu controlo em uma trigger qual o código de lançamento
usarei: Se for "E" incremento um generator se for "S" outro e gravo o valor
no campo codmovto.
Dessa maneira eu posso ter um mesmo código de movto lançado uma vez para
Entradas eoutra vez para saída, onde a Primaty Key é Codmovto+Tipolan
A trigger é essa abaixo:
BEGIN
IF (NEW.CODMOVTO IS NULL) THEN
BEGIN
IF (NEW.TIPO = 'E') THEN NEW.CODMOVTO = GEN_ID(GEN_MOV_E,1);
IF (NEW.TIPO = 'S') THEN NEW.CODMOVTO = GEN_ID(GEN_MOV_S,1);
END
END
Aqui a questão é: Estou no caminho correto ou existem formas melhores de
se trabalhar neste conceito
Se alguém puder me dar a sua opinião de acordo com suas experiências fico
muito agradecido
Obrigado e bom Final de Semana á todos
--
Rogério Calixto
Programador de Sistemas
Mais detalhes sobre a lista de discussão lista