Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tiago Maia

FireBird como fazer campo autonumeração?

Recommended Posts

Olá pessoal!

Estou com um pequeno probleminha. Sou novato em FireBird e não estou conseguindo definir um campo integer como autonumeração.

 

Informações:

SGBD: FireBird 2.0

SISTEMA DE ADMINISTRAÇÃO: IB Expert

SISTEMA OPERACIONAL: Microsoft Windows 2000

 

Eu criei o banco e criei as tabelas. Durante a criação das tabelas eu ia marcando os campos PK como autonumeração (Create Generator). Mas quanto terminei de criar todas as tabelas, percebi que nenhuma delas estavam com os campos autonumeração. Ao tentar definir novamente, dá erro e surge a seguinte mensagem:

 

This operation is not defined for system tables.

unsuccessful metadata update.

DEFINE GENERATOR failed.

attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_11".

 

E agora? Alguém poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tiago,

 

O Firebird não possui um tipo específico para autonumeração, verifique se algumas Triggers foram geradas e vinculadas com seus Generators.

 

É desta forma que o Firebird manipula seus campos "autonumeração".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tiago,

 

O Firebird não possui um tipo específico para autonumeração, verifique se algumas Triggers foram geradas e vinculadas com seus Generators.

 

É desta forma que o Firebird manipula seus campos "autonumeração".

Obrigado Prog. :lol:

Pensei que o FireBird tivesse, afinal aparece no IB Expert a opção de AutoInc. <_<

 

Essa não eu não fazer trigger. http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Alguém tem um exemplo de trigger para tornar um campo do tipo integer como autoincremento? E depois de criar esse trigger é só eu usar a tabela normalmente? http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai usar a tabela normalmente.

 

Teoricamente, quando você selecionasse, no IB Expert, um campo para ser autoincremento, este deveria criar a trigger, ou algum recursos semelhante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo:Execute em duas etapas:1ºCREATE GENERATOR GEN_ID_Funcionario;--------------------------------------------------------2ºSET TERM !! ;CREATE TRIGGER Tgen_id_funcionario FOR funcionarios BEFORE INSERT POSITION 0 AS BEGIN NEW.id_funcionario = GEN_ID(GEN_ID_Funcionario, 1); END--------------------------------------------------------Funciona que é uma beleza :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.