Arquivo para Julho, 2008

Generators em Firebird

Veja de uma forma bastante simplificada o uso de Generators no Interbase/Firebird.

Obter o valor de um generator

Para obter o valor de um generator devemos usar a função GEN_ID do InterBase/FireBird. A sintaxe é:

GEN_ID(NomeDoGenerator, Incremento);

Exemplos:
GEN_ID(Gen_Cliente, 1);
GEN_ID(Gen_Cliente, 0);

No primeiro exemplo o generator será incrementado e o novo valor será retornado. Já no segundo exemplo o generator não será incrementado e seu valor atual será retornado.

Dentro de um trigger podemos atribuir o valor de um generator a um campo da tabela, como mostra o exemplo a seguir:

CREATE TRIGGER TRIG_Cliente FOR Cliente BEFORE INSERT AS
BEGIN
NEW.Codigo = GEN_ID(Gen_Cliente, 1);
END^

Para obter o valor de um generator através de uma aplicação, podemos executar o comando SELECT mostrado a seguir sobre uma tabela que possua apenas um registro:

SELECT GEN_ID(NomeDoGenerator, 1) FROM NomeTabela

Onde NomeTabela é o nome de uma tabela do banco de dados que precisa ter um, e somente um, registro. Geralmente usamos a tabela de sistema RDB$DATABASE para este propósito. Eis um exemplo:

SELECT GEN_ID(Gen_Cliente_Codigo, 1) FROM RDB$DATABASE;

Reiniciar a contagem de um generator

Para re-iniciar a contagem de um generator basta executar o comando abaixo:

SET GENERATOR TO X;

Onde X é um número inteiro.

O exemplo abaixo define o valor do generator GEN_Cliente_Codigo igual a zero:

SET GENERATOR GEN_Cliente TO 0

Observação: O valor obtido com GEN_ID(GEN_Cliente, 1) após o exemplo dado anteriormente será 1 (um), pois a função GEN_ID retorna o valor do generator já incrementado.

Remover (excluir) um generator

No InterBase 6.0.x:
DELETE FROM RDB$GENERATORS
WHERE RDB$GENERATOR_NAME = ‘NOME_DO_GENERATOR’;

No FireBird:
DROP GENERATOR NOME_DO_GENERATOR;

link

Deixe um comentário

TBODBXFB 0.6 RC2 – Firebird DBX4 Driver

Autor: Cesar Romero, Link http://blogs.liws.com.br/cesar/?p=232

Alterações desta versão

  • Adicionado suporte a TSQLDataSet
  • Adicionado suporte a TSQLStoredProc
  • Corrigido Access Violation ao chamar DBXCommand_GetRowsAffected com comandos DDL

Leia o resto deste artigo »

Comentários (2)

Delphi IDE (Code Editor) Keyboard Shortcuts

Note: this tip was originally posted by Adam Markowitz (Borland)

Every once in a while I’ll come across a message from a developer who wasn’t aware of a particular feature or keyboard shortcut that might ease some of their development pain. Following is a short list of convenient editor keyboard shortcuts for the default keybinding that is shipped with Delphi 2006. This not an exhaustive list, just the ones that I find are lesser known, yet still very convenient.

Leia o resto deste artigo »

Comentários (2)