Fórum Índice Unico sem UPPER #53996

28/11/2005

0

Olá amigos,

Tentei esta solução no PostGreSQL mas não consegui e vou ver como é no FireBirdSQL.

Tenho uma tabela por exemplo:

CREATE TABLE CLIENTE (CODIGO INTEGER, NOME VARCHAR(30) NOT NULL, CONSTRAINT UK_NOME UNIQUE (NOME));

Quero que este índice verifique mesmo com MAIUSCULAS/minusculas,
ex:

INSERT INTO CLIENTE VALUES (1,´ROMULO´);
INSERT INTO CLIENTE VALUES (2,´ROMULo´);
INSERT INTO CLIENTE VALUES (3,´ROMUlO´);

Eu quero que o banco já verifique isso, não gostaria de antes da inclusão fazer um SELECT .. WHERE UPPER(NOME) = .... ou qualquer outra solução.

Será que as Collations podem resolver?

No SQL Server funciona direitinho, criando uma constraint UNIQUE ele nao deixa estas diferenças passagem. No SQL SERVER ele diz a Collation:

SQL_Latin1_General_CP1_CI_AS

Valeu!

Romulo Oliveira Almeida
Macaé / RJ


Romulocpd

Romulocpd

Responder

Posts

28/11/2005

Edilcimar

coloque o upper na hora de incluir na tabela, aí a tabela já ficará toda em maiúsculo


Responder

Gostei + 0

28/11/2005

Afarias

|Será que as Collations podem resolver?

sim. criar a coluna definindo um collate case-insensitive resolveria.


outra solução é ter uma trigger before insert/update com o código:

if (new.nome is not null) then
new.nome = upper(new.nome);



T+


Responder

Gostei + 0

29/11/2005

Thomaz_prg

Colega, você teria uma lista com esses collate´s case insensitive, ou algum link...


Responder

Gostei + 0

29/11/2005

Romulocpd

Fala Pessoal,

Faço a mesma pergunta do Thomaz, qual seria este Collation?

Abraços!
Romulo


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar