A um tempo atrás tive alguns problemas para encontrar algo que resolvesse um problema constante em muitas aplicações. Resolver duplicações de resgistros com constraints.
Em minhas buscas pela net encontrei várias coisas, que cheguei a implementar porém, não me foram muito bem, até que cheguei a uma solução que me ajudou muito. Que foi simplesmente usar índices para validação de constraints. Bom, para quem não sabe, PostgreSQL (PG), diferentes de outros SGBD's (SQL Server, por exemplo), os atributos do tipo String são armazenados de forma CASE SENSITIVE, ou seja, faz distinção entre maiúsculas e minúsculas.
Para contornar essa dificuldade, resolvi usar da seguinte forma:
CREATE TABLE pais
(
id bigint NOT NULL,
nome_pais character varying(255) NOT NULL,
sigla character varying(3) NOT NULL,
CONSTRAINT pais_pkey PRIMARY KEY (id )
);
CREATE UNIQUE INDEX UK_PAIS ON PAIS ( (lower(rtrim(ltrim(NOME_PAIS)))) );
Dessa forma o SGBD cria um índice verificando CASE INSENSITIVE.
Nenhum comentário:
Postar um comentário