PDA

Ver la Versión Completa : Llave primaria repetida


Coco_jac
24-08-2007, 00:47:11
Hola de neuvo con otro problema.
Estoy migrando data de paradox a mysql. tbl_clientes es una de las tablas en mysql donde la llave es fld_cclie, bueno no hay problema hasta aqui,sino que pasa algo raro, por decir tengo un codigo de cliente ab001 en dicha tabla, y luego al tratar de insertar otro codigo de cliente con codigo AB001, me muestra un mensaje que no se puede insertar registro codigo duplicado, como podria hacer que delphi distinga entre mayuscula y minusculas en este caso.

Espero su respuesta musschas gracias.

egostar
24-08-2007, 00:52:35
Hola de neuvo con otro problema.
Estoy migrando data de paradox a mysql. tbl_clientes es una de las tablas en mysql donde la llave es fld_cclie, bueno no hay problema hasta aqui,sino que pasa algo raro, por decir tengo un codigo de cliente ab001 en dicha tabla, y luego al tratar de insertar otro codigo de cliente con codigo AB001, me muestra un mensaje que no se puede insertar registro codigo duplicado, como podria hacer que delphi distinga entre mayuscula y minusculas en este caso.

Espero su respuesta musschas gracias.

Hola,

Porque no cuando llegues a tu casa (porque veo en tu otro hilo (http://www.clubdelphi.com/foros/showthread.php?t=47308) que no tienes tu delphi ahora mismo) nos muestras algo de tu código para ver que está pasando y poder ayudarte mejor.

Salud OS

roman
24-08-2007, 03:29:12
Yo creo que depende del cotejamiento que uses para ese campo. Por ejemplo, yo normalmente uso latin1_spanish_ci que me permite caracteres latinos sin distinguir mayúsculas de minúsculas (case insensitive). Hago la prueba tratando de usar un campo char con ese cotejamiento, y -en efecto- no me permite repetir una clave que sólo difiera en las mayúscula y minúsculas. Sin embargo, si cambio el cotejamiento, por ejemplo a latin1_general_cs (case sensitive), entonces sí me lo permite.

// Saludos

Coco_jac
25-08-2007, 16:58:59
Hola Roman disculpa mi igonorancia, pero desde el mysql que manejo no veo cambiar el punto que manejas, por favor te pido si me das un pequeño ejemplo de como poder lograrlo.

Gracias por tu apoyo

roman
29-08-2007, 16:10:05
Un ejemplo:


alter table tbl_clientes
change fld_cclie
fld_cclie char(10) character set latin1 collate latin1_general_cs


// Saludos

Coco_jac
29-08-2007, 23:48:12
Hola Roman recien pude ver tu post, manejo mysql y trate de hacer esto

tenia esto :
CREATE TABLE `tbl_cliente` (
`fld_cclie` varchar(5) NOT NULL default '',
`fld_cdvend` varchar(5) default NULL,
`fld_distr` varchar(20) default NULL,
`fld_Fax` varchar(10) default NULL,
`fld_correo` varchar(60) default NULL,
`fld_flag` tinyint(1) default '0',
PRIMARY KEY (`fld_cclie`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


el cual origina(por defecto) :latin1_spanish_ci

trate esto :

ENGINE=MyISAM DEFAULT CHARSET=latin1_general_cs;

pero no reconoce el tipo, tal vez sea por la version aunque no creo, es la 4.1.9 de mysql