Fórum Autoincremento #36685
06/05/2003
0
ae.. Qual o tipo de dado no Interbase que é equivalente ao autoincremento do paradox?
Skaarj
Curtir tópico
+ 0
Responder
Posts
06/05/2003
Obubiba
Olá amigo.
No Interbase, não existe um campo do tipo ´autoincremento´. Mas podemos emular a existência de um utilizando uma trigger e um generator, como a seguir:
set term $ ;
create trigger Tr_Tabela for Tabela before insert as
begin
new.codigo = gen_id(Inc_Tabela,1);
end$
set term ; $
create generator Inc_Tabela;
O comando [i:8494e92ea0]Set Term[/i:8494e92ea0] define um novo caractere ou conjunto de caracteres como novo terminador, com o objetivo de não confundir o término da trigger com o término de um simples comando dentro da mesma.
A linha [i:8494e92ea0]create trigger T_Pessoa for Pessoa before insert as[/i:8494e92ea0] define como T_Pessoa o nome da trigger, Pessoa como sendo o nome da tabela à que a trigger deve atuar e, before insert define que a trigger atuará logo que um novo registro for inserido na tabela.
A linha [i:8494e92ea0]new.codigo = gen_id(Inc_Pessoa,1);[/i:8494e92ea0] define o campo codigo como sendo da tabela associada, ao qual receberá o valor calculado por [b:8494e92ea0]gen_id[/b:8494e92ea0], que é uma função interna do banco, que atribui ou subtrai o número especificado(1) do contador(Generator [i:8494e92ea0]Inc_Tabela[/i:8494e92ea0] criado com o comando acima). O generator nesse caso, age como uma variável interna do banco.
No Interbase, não existe um campo do tipo ´autoincremento´. Mas podemos emular a existência de um utilizando uma trigger e um generator, como a seguir:
set term $ ;
create trigger Tr_Tabela for Tabela before insert as
begin
new.codigo = gen_id(Inc_Tabela,1);
end$
set term ; $
create generator Inc_Tabela;
O comando [i:8494e92ea0]Set Term[/i:8494e92ea0] define um novo caractere ou conjunto de caracteres como novo terminador, com o objetivo de não confundir o término da trigger com o término de um simples comando dentro da mesma.
A linha [i:8494e92ea0]create trigger T_Pessoa for Pessoa before insert as[/i:8494e92ea0] define como T_Pessoa o nome da trigger, Pessoa como sendo o nome da tabela à que a trigger deve atuar e, before insert define que a trigger atuará logo que um novo registro for inserido na tabela.
A linha [i:8494e92ea0]new.codigo = gen_id(Inc_Pessoa,1);[/i:8494e92ea0] define o campo codigo como sendo da tabela associada, ao qual receberá o valor calculado por [b:8494e92ea0]gen_id[/b:8494e92ea0], que é uma função interna do banco, que atribui ou subtrai o número especificado(1) do contador(Generator [i:8494e92ea0]Inc_Tabela[/i:8494e92ea0] criado com o comando acima). O generator nesse caso, age como uma variável interna do banco.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)