Índice Unico sem UPPER
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
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
Curtidas 0
Respostas
Edilcimar
28/11/2005
coloque o upper na hora de incluir na tabela, aí a tabela já ficará toda em maiúsculo
GOSTEI 0
Afarias
28/11/2005
|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+
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
Thomaz_prg
28/11/2005
Colega, você teria uma lista com esses collate´s case insensitive, ou algum link...
GOSTEI 0
Romulocpd
28/11/2005
Fala Pessoal,
Faço a mesma pergunta do Thomaz, qual seria este Collation?
Abraços!
Romulo
Faço a mesma pergunta do Thomaz, qual seria este Collation?
Abraços!
Romulo
GOSTEI 0