Ajuda como montar uma trigger para auto_incremento
Caros amigos estou migrando do Paradox para o Firebird.
Comecei a criar as minhas tabelas e preciso criar campos auto_incrementos.
Vocês poderiam comentar este código que peguei na net. Se o mesmo está 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
Comecei a criar as minhas tabelas e preciso criar campos auto_incrementos.
Vocês poderiam comentar este código que peguei na net. Se o mesmo está 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
Curtidas 0
Respostas
Flavia_mococa
30/07/2004
Olá Rafael, tudo bem?
Para criar um campo auto incremento na sua tabela Voce pode usar um generator associado a uma trigger:
create generator nome_do_generator;
set generator nome_do_generator to 0;
create trigger nome_da_trigger
active before insert position 0
as
begin
if (new.nome_do_campo is null) then
new.Nome_do_campo = gen_id(nome_do_generator,1);
end
p.s.: Mandei o inicio do meu banco para voce dar uma olhada, é sobre o sistema de cemieterios, lembra? Lá tem alguns triggers e generators criados, voce pode dar uma estudada em todo caso aconselho a baixao o IBExpert para lhe auxiliar na construção do seu banco, eu o baixei e me surpreendi com a facilidade de se criar bd´s por ele.
Flavinha
Para criar um campo auto incremento na sua tabela Voce pode usar um generator associado a uma trigger:
create generator nome_do_generator;
set generator nome_do_generator to 0;
create trigger nome_da_trigger
active before insert position 0
as
begin
if (new.nome_do_campo is null) then
new.Nome_do_campo = gen_id(nome_do_generator,1);
end
p.s.: Mandei o inicio do meu banco para voce dar uma olhada, é sobre o sistema de cemieterios, lembra? Lá tem alguns triggers e generators criados, voce pode dar uma estudada em todo caso aconselho a baixao o IBExpert para lhe auxiliar na construção do seu banco, eu o baixei e me surpreendi com a facilidade de se criar bd´s por ele.
Flavinha
GOSTEI 0
Vinicius2k
30/07/2004
Raphael,
´Uma coisa é uma coisa, outra coisa é outra coisa´ :D
No código acima, vc duas formas distintas de criar campos auto-incremento...
No primeiro é criado um Generator e o mais comum é que seja associado a uma Trigger que dispare a função GEN_ID que fará o auto-incremento... assim como mostrado pela Flavinha...
O segundo é uma Trigger que [b:7b9c4c9ac7]não está usando o Generator[/b:7b9c4c9ac7]... ela está fazendo o auto-incremento, baseado num select max (maior valor) da própria tabela... ela verifica que o maior código é 100 e o próximo será 101, por exemplo...
T+
´Uma coisa é uma coisa, outra coisa é outra coisa´ :D
No código acima, vc duas formas distintas de criar campos auto-incremento...
No primeiro é criado um Generator e o mais comum é que seja associado a uma Trigger que dispare a função GEN_ID que fará o auto-incremento... assim como mostrado pela Flavinha...
O segundo é uma Trigger que [b:7b9c4c9ac7]não está usando o Generator[/b:7b9c4c9ac7]... ela está fazendo o auto-incremento, baseado num select max (maior valor) da própria tabela... ela verifica que o maior código é 100 e o próximo será 101, por exemplo...
T+
GOSTEI 0