Fórum Índice Unico sem UPPER #53996
28/11/2005
0
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
Curtir tópico
+ 0Posts
28/11/2005
Edilcimar
Gostei + 0
28/11/2005
Afarias
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+
Gostei + 0
29/11/2005
Thomaz_prg
Gostei + 0
29/11/2005
Romulocpd
Faço a mesma pergunta do Thomaz, qual seria este Collation?
Abraços!
Romulo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)