PDA

Ver la Versión Completa : Distincion de mayusculas en campos unicos


xerkan
31-08-2004, 12:15:37
Tengo una tabla que contiene una constraint del tipo:

CONSTRAINT nombre UNIQUE(campo)

el caso es que el sistema funciona siempre y cuando en el campo se ponga un valor exactamente igual, pero me gustaria que no se pudiera poner en los campos alfanumericos campos iguales pero uno en minusculas y otro en mayusculas (que se consideren como campos repetidos "campo" y "CAMPO")

Gydba
31-08-2004, 13:00:43
Hola,

No podrías hacerlo con un trigger y un Upper del campo?

xerkan
31-08-2004, 13:50:27
Si que podria hacer un triger que hiciera un select * where Upper(campo)=Upper(valor) y si devuelve un valor que saltara un error es mas lo podria hacer en delphi pero queria saber si hay alguna forma mas sencilla en el contraint de la sentencia sql

jzginez
01-09-2004, 16:27:40
Si creas un dominio del tipo varchar(x) para tu campo unico y que este solo acepte mayusculas (no tengo en este momento el código deja que lo voy a buscar, era de un ejemplo que encontre una vez)

jachguate
01-09-2004, 18:45:46
Si que podria hacer un triger que hiciera un select * where Upper(campo)=Upper(valor) y si devuelve un valor que saltara un error es mas lo podria hacer en delphi pero queria saber si hay alguna forma mas sencilla en el contraint de la sentencia sql

Lo conveniente es tener establecido el constraint, y en el trigger before insert/before update, asegurarse de convertir el valor siempre a mayúsculas o a minúsculas, puesto que interbase/firebird no tiene indices insensibles a mayúsculas/minusculas. Todo en esta bd, es case sensitive.

Hasta luego.

;)