[firebase-br] Incrementar Generator na Trigger After Insert
Eduardo Bahiense
eduardo em icontroller.com.br
Ter Dez 19 20:22:41 -03 2006
Olá
Vou dar alguns palpites:
1. Concordo com quem disse para não se preocupar com uma eventual
seqüência descontinuada por se "queimar" um generator.
2. As chances de dois usuários inserirem o código 0 ao mesmo tempo, são
enormes, se existirem apenas 2 usuários. Se forem mais de 2, sempre
acontecerá. (Sim, as leis de Murphy foram gravadas em todas as bios de
todos os computadores)
3. Basear a lógica em deixar acontecer uma exceção, embora tecnicamente
viável, deve ser evitado sempre que possível (melhor não deixar
acontecer o erro).
4. Se vc já se conforma em fazer em duas etapas, então quem sabe uma
estratégia com 2 generators não funcionaria?
CREATE TRIGGER CLIENTES_BI FOR CLIENTES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF NEW.CODIGO IS NULL --JUST IN CASE
OR NEW.CODIGO = 0 THEN
NEW.CODIGO = GEN_ID(GEN_TEMPORARIO,1); -- evita violação
END
CREATE TRIGGER CLIENTES_AI FOR CLIENTES
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
UPDATE CLIENTES SET CODIGO = GEN_ID(GEN_CLIENTES_ID,1)
WHERE CODIGO = NEW.CODIGO -- isto foi atribuido antes, então...
END
Acho que assim fecha todas, mas não testei.
Abs, Eduardo
Mais detalhes sobre a lista de discussão lista