Pesquisa

Pesquisa personalizada

quarta-feira, 1 de junho de 2011

Com usar a Função Trim() e Campos Auto Incremento

Dicas,  Artigo Firebird,  Função TRIM(), Auto Incremento, Insert,  Chave Primária, Generator, Sequence, Firebird , Tabela,  Caracteres  ,
Usando a função TRIM() para remover espaços em branco (ou outros caracteres) no início e fim do valor de um campo do tipo CHAR ou VARCHAR

A função TRIM() do Firebird pode ser usada quando precisamos remover espaços em branco (ou outros caracteres) no início e fim do valor de um campo do tipo CHAR ou VARCHAR. O retorno desta função é um CHAR ou VARCHAR sem os espaços em branco no ínicio e/ou final.

Veja como usar esta função em um comando SQL DML SELECT FROM:

SELECT TRIM(NOME) FROM CLIENTES WHERE ID = 1;



Aqui, se o valor do campo NOME possuir espaços antes e depois, a função TRIM() se encarregará de retirá-los.

É possível usar esta função para remover outros caracteres que não sejam espaços. Suponhamos que o valor do campo NOME seja algo como "##OSMAR J. SILVA##". Os caracteres "#" antes e depois do nome podem ser bda seguinte forma:

SELECT TRIM('#' FROM NOME) FROM CLIENTES WHERE ID = 1;


A função TRIM() pode ser usada em DSQL (Dynamic SQL) e PSQL (Stored procedure and trigger language).



Como criar uma tabela contendo um campo auto-incremento no Firebird

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:

/* criação da tabela CLIENTES */
CREATE TABLE CLIENTES(
ID INTEGER NOT NULL,
NOME VARCHAR(40) NOT NULL,
EMAIL VARCHAR(40) NOT NULL
);


b) O passo seguinte é definir o campo ID como chave primária. Isso pode ser feito com o seguinte comando DDL:

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):

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):

CREATE GENERATOR GEN_CLIENTES_ID;
SET GENERATOR GEN_CLIENTES_ID TO 0;


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:

CREATE TRIGGER TRIGGER_CLIENTES_BI FOR CLIENTES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
if (NEW.ID is NULL) then NEW.ID = GEN_ID(GEN_CLIENTES_ID, 1);
END;


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:

INSERT INTO CLIENTES(NOME, EMAIL) VALUES('OSMAR J. SILVA',
'osmar@arquivodecodigos.net');


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.

Fonte: http://www.arquivodecodigos.net/principal/