Fórum Autoincremento #36685

06/05/2003

0

ae.. Qual o tipo de dado no Interbase que é equivalente ao autoincremento do paradox?


Skaarj

Skaarj

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar