Pegar valor atual de uma sequência em PostgreSQL

Maio 20, 2007

Pessoal nosso blog mudou de endereço!  http://meiocodigo.com/

Neste post, vamos falar de como pegar o ultimo valor de uma sequência de PostgreSQL. Para entender melhor o que são sequências, veja uma aplicação delas no post Auto-incremento em PostgreSQL.

Uma das grandes aplicações do valor atual de uma sequência é a garantia de um banco relacional. Um registro que seja subdivido em várias entidades de um banco de dados precisa que a chave do registro seja passada com chave estrangeira para os diferentes registros nas diferentes entidades.

Para obter o valor atual de uma sequência(que teoricamente foi usado no ultimo registro, caso seja seguido o artigo citado acima) é usada a funcao currval. Como mostra o código abaixo:


SELECT currval('nome_da_sequencia');

Bem, é isso. Qualquer dúvida deixa como comentário.


Case-insensitive em PostgreSQL

Maio 19, 2007

Pessoal nosso blog mudou de endereço!  http://meiocodigo.com/

Hoje vamos falar de comparação de strings no PostgreSQL. Especificamente sobre a sensibilidade a caixa(maiúsculas e minúsculas), o que um grande empecilho à criação de sistemas de busca.

Este também foi outro grande problema que eu enfrentei. O operador LIKE é case-sensitive(sensivel a maiúsculas e minúsculas).

A solução foi simples e rápida. Existe um operador chamado ILIKE, o qual é case-insensitive.

Exemplo:

SELECT nome FROM empregado WHERE nome ILIKE 'vinicius';

O código acima retorna todos os registros onde o nome seja ‘vinicius’, ‘Vinicius’, ‘ViNiCiUs’, etc.

A sensibilidade à acentuação é um pouco mais complicada então vamos deixar para um próximo post.

Espero ter ajudado.


Auto-Incremento em PostgreSQL

Maio 18, 2007

Pessoal nosso blog mudou de endereço!  http://meiocodigo.com/

Neste post falarei a respeito de uma das dificuldades em se usar o gerenciador de banco de dados PostgreSQL. Uma das diferenças mais notáveis aos iniciantes no assunto: a falta da propriedade Auto-increment, a qual é largamente usada na criação de chaves primárias.

Para resolver esta falta, seguem abaixo duas formas de simular a mesma propriedade no PostgreSQL:

Para se criar um campo de uma tabela com valores sequenciais(adequado para chaves) existem duas formas. Uma delas leva a outra.

Vamos comecar pela mais simples, criar a sequencia no momento da criaçao da tabela através do tipo SERIAL:

CREATE TABLE pessoa
(id SERIAL PRIMARY KEY,
nome VARCHAR(100));

A forma acima simula o que eu vou exemplificar abaixo, a criação da sequencia manualmente:

CREATE SEQUENCE pessoa_id_seq;

CREATE TABLE pessoa
(id INTEGER PRIMARY KEY DEFAULT nextval(‘pessoa_id_seq’),
nome VARCHAR(100));

Atente para a igualdade entre o nome da sequencia e o parametro passado para a função nextval.

Bem, é isso, espero ter ajudado.