Auto-Incremento ao modo do Firebird

Até a versão 2.5 do Firebird não existe a figura da coluna Auto-Incremento que existe em outros banco de dados.

No Firebird, você deve criar um GENERATOR que ira cuidar de gerar a sequência e associar uma Trigger para incluir o sequencial na tabela.

Exemplo para criar uma tabela de cliente com código Auto-Incremento:
[code]
// criar o recurso para armazenar o auto-incremento
CREATE GENERATOR CODIGO_CLIENTE; (formato mais antigo)
ou
CREATE SEQUENCE CODIGO_CLIENTE; (formato novo)

// criar a tabela
CREATE TABLE FB_CLIENTE (
CODIGO INTEGER NOT NULL,
NOME VARCHAR(50),
ENDERECO VARCHAR(128),
CIDADE VARCHAR(32),
ESTADO VARCHAR(5)
);

// para marcar o valor inicial (é opcional)
ALTER SEQUENCE CODIGO_CLIENTE RESTART WITH 0;

// Trigger para gerar o próximo código
SET TERM ^ ;
CREATE OR ALTER TRIGGER FB_CLIENTE_GERAR_CODIGO FOR FB_CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  new.codigo =  gen_id(CODIGO_CLIENTE,1);
end
^
SET TERM ; ^
[/code]

Usando insert para retornar o valor o código inserido:
[code]
insert into fb_cliente
(nome,endereco,cidade,estado)
values( :nome,:endereço,:cidade,:estado)
returning codigo into :codigo_cliente
[/code]
 

Com FireDAC, utilizar o método FDQuery1.OPEN e irá retornar o parâmetro INTO como na lista de FIELDS (código cliente);

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *