[DUVIDA] chave primaria já existente como autonumeração



  • Bom dia, vim com mais uma dúvida que ainda não vi nas vídeo aulas.

    Ao criar um formulário sem vinculo com alguma tabela, o maker já me sugere criar um campo CODIGO que será a chave primaria e seu tipo é autonumeração, perfeito.

    Mas eu tenho um banco de dados Firebird, e a estrutura da tabela já está montada, ou seja, lá, já tenho minha chave primaria. Ao criar o formulário vinculando essa tabela, eu não encontro o tipo autonumeração na propriedade tipo. Como eu faço para esse campo codigo da minha tabela ficar como autonumeração nessa situação?


    OBS: Eu conecto no firebird com base adicional.


  • Bom dia
    pelo que eu entendo teria que criar uma TRIGGER no seu Banco de Dados Ex:

    CREATE TRIGGER nome_da_trigger for nome_da_tabela
    BEFORE INSERT position 0
    AS
    BEGIN
    new.id = gen_id("nome_do_generator",1);
    END;

    Algo assim do tipo

    acho que e isso que eu entendi


  • Entendi! Então, eu também imaginei isso e minhas tabelas já tem a trigger.

    Mas o maker não trata o Codigo no formulário como autonumeração (Tipo de dados que o make atribui para auto incremento).

    Nas minhas telas de cadastros, eu quero deixar visível para o usuário, o código que está sendo atribuído para o cadastrado (Apenas leitura). Quando eu abrir o formulário, queria que já pegava o próximo código (Id, chave primaria).

    Hoje isso não acontece, com eu disse acima, se eu criar um formulário sem vinculo com alguma tabela, o maker ja faz esse trabalho. Ele cria uma chave primaria com o tipo AUTONUMERAÇÃO, e todo cadastro que eu faço já pega a sequencia (1, 2, 3, 4....). Queria fazer o mesmo mas com minha tabela já existente.


  • Experimenta colocar no valor padrão desse seu campo como autoincremento o seguinte:

    SELECT GEN_ID([b]$generator$[/b],1) FROM RDB$DATABASE

    O destaque generator é o nome que deverá colocar equivalente ao seu generator no banco.

Log in to reply