[firebase-br] duvida autoincremento
João Marcos Amorim
joao_jma em yahoo.com.br
Qua Ago 8 11:37:46 -03 2007
Minha dúvida é sobre este tópico:
http://www.firebase.com.br/fb/artigo.php?id=2
Dúvida: Na realidade, a geração de código auto-incremento realmente funciona, mas quando o usuário insere um novo registro o código gerado não aparece na tela, como fazer para isso não acontecer? Ou seja na hora da inserção o código gerado aparecer no Edit da tela?
----------------------------------------------------------------------------------------------------------
Abaixo segue o tópico:
----------------------------------------------------------------------------------------------------------
Como usar campos auto-incrementais no Interbase ?
R: O Interbase não possui suporte direto ao tipo de dado autoincremental, mas voce pode facilmente simular esse tipo de dado, até com algumas vantagens. Veja a seguir um exemplo de como faze-lo :
Imagine que voce tenha uma tabela CLIENTES com um campo CODIGO INTEGER NOT NULL que é sua chave primária. Voce deseja que o campo CODIGO seja auto-incremental. Para isso, defina um generator como o seguinte :
CREATE GENERATOR GEN_CLIENTE;
Depois, crie um TRIGGER na posição BEFORE INSERT da tabela CLIENTES, como o seguinte :
CREATE TRIGGER CLIENTES_BI
FOR CLIENTES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.CODIGO IS NULL) THEN NEW.CODIGO = GEN_ID(GEN_CLIENTE,1);
END
Com isso voce está simulando um campo auto-incremental, com a vantagem de que se voce atribuir um valor ao campo CODIGO, o trigger utilizará esse valor para o campo e não irá gerar um novo, o que é muito útil quando voce está migrando dados de uma base para outra e não quer que os códigos se alterem. (Carlos H. Cantu)
Alertas do Yahoo! Mail em seu celular. Saiba mais.
Mais detalhes sobre a lista de discussão lista