Você está aqui: Firebird ::: Dicas & Truques ::: Comandos DDL (Data Definition Language - Linguagem de Definição de Dados) |
Como criar uma tabela contendo um campo auto-incremento no FirebirdQuantidade de visualizações: 20297 vezes |
Em algumas situações precisamos criar tabelas que contenham campos auto-incremento. Estes campos são geralmente do tipo inteiro, chave primária e usados para identificar, unicamente, um produto, cliente, pedido, etc. O Firebird, até sua versão 2.5, não fornece uma forma automática de se criar campos auto-incremento. Para conseguir realizar esta tarefa precisamos usar um gerador GENERATOR ou SEQUENCE. Nesta dica eu mostro passo-a-passo como isso pode ser feito. Vamos começar da forma mais complicada, ou seja, sem usar nenhuma ferramenta gráfica, apenas o SQL Editor do IBExpert. Para acessá-lo vá em Tools -> SQL Editor. Siga atentamente os passos abaixo: a) Comece criando a seguinte tabela. Basta copiar o comando DDL CREATE TABLE abaixo, colar no SQL Editor e pressionar F9: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- /* criação da tabela CLIENTES */ CREATE TABLE CLIENTES( ID INTEGER NOT NULL, ...... b) O passo seguinte é definir o campo ID como chave primária. Isso pode ser feito com o seguinte comando DDL: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- ALTER TABLE CLIENTES ADD CONSTRAINT PK_CLIENTES PRIMARY KEY (ID); ...... c) Agora que já temos a tabela, chegou a hora de criar o GENERATOR/SEQUENCE. Cole o código a seguir na janela do SQL Editor e pressione F9 (execute uma linha de cada vez): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE SEQUENCE GEN_CLIENTES_ID; ALTER SEQUENCE GEN_CLIENTES_ID RESTART WITH 0; ...... Veja que aqui eu estou usando a nova sintáxe de criação de SEQUENCE do Firebird 2.5. Se você estiver usando uma versão mais antiga, a sintáxe correta é (novamente execute uma linha de cada vez): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE GENERATOR GEN_CLIENTES_ID; ...... d) Estamos quase finalizando. Só precisamos criar um trigger que será disparado antes da inserção de novos registros (BEFORE INSERT). Veja o código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE TRIGGER TRIGGER_CLIENTES_BI FOR CLIENTES ACTIVE BEFORE INSERT POSITION 0 AS ...... Este trigger faz com que o valor do campo ID seja sempre auto-incremento, começando em 1. Hora do teste final! Insira alguns registros na tabela usando um comando DML INSERT INTO parecido com o que temos abaixo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- INSERT INTO CLIENTES(NOME, EMAIL) VALUES('OSMAR J. SILVA', ...... Note que o campo ID não é mencionado na query. Isso faz com que seu valor seja enviado como NULL e o trigger se encarregue de gerar o novo valor auto-incremento e atribuí-lo a este campo. |
![]() |
Veja mais Dicas e truques de Firebird |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |