Fórum Ajuda como montar uma trigger para auto_incremento #245132
30/07/2004
0
Comecei a criar as minhas tabelas e preciso criar campos auto_incrementos.
Vocês poderiam comentar este código que peguei na net. Está tudo ok? Posso utilizá-lo nas minhas tabelas?
Generator
CREATE GENERATOR GEN_CLIENTE_ID;
SET GENERATOR GEN_CLIENTE_ID TO 0;
TRIGGER
AS
DECLARE VARIABLE AUX_ID INTEGER;
begin
if (new.id = 0) then
begin
select max(cliente.id) from cliente into :aux_id;
if (:aux_id is null) then
aux_id = 0;
aux_id = aux_id+1;
new.id = :aux_id;
end
end
Será de grande ajuda
No Aguardo
Raphael
Rbfonseca
Curtir tópico
+ 0Posts
30/07/2004
Inutaishou
Já o Trigger, é o que faz todo o trabalho de inserção do código autoinc...
Crie o Trigger da seguinte forma:
CREATE TRIGGER CLIENTE_BI FOR CLIENTE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN NEW.ID = GEN_ID(GEN_CLIENTE_ID,1); END ^
Ele já estará fazendo o autoincremento do seu campo...
Porém, dessa forma, qualquer auteração que você fizer no campo de código em uma inserção será descartada! Cuidado quanto a isso... Para evitar que as alterações feitas por você manualmente sejam descartadas, coloque a seguinte linha logo após o Begin:
IF (NEW.ID IS NULL) THEN
PS: Se você usar o IBExpert, fica mais fácil para criar seus triggers...
[]´s,
Gostei + 0
30/07/2004
Eniorm
CREATE GENERATOR nome_do_gerador; COMMIT; SET TERM !! ; CREATE TRIGGER nome_da_trigger FOR tabela BEFORE INSERT POSITION 0 AS BEGIN NEW.codigo_da_tabela = GEN_ID(nome_do_gerador, 1); END;!! SET TERM ; !!
Quando for ´zerar´ toda a tabela pelo comando delete from nomedatabela
para voltar a autonumeração para o início, ou seja, voltar para o 0, use o comando:
set generator nomedogenerator to 0; commit;
Gostei + 0
30/07/2004
Sandra
http://delphiforum.icft.com.br/forum/viewtopic.php?t=49393
rbfonseca,
Por favor, escolha o fórum adequado de acordo com a sua dúvida e não duplique mensagens.
Releia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)