Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

evitar duplicidad en clave primaria doble de mysql

Estas en el tema de evitar duplicidad en clave primaria doble de mysql en el foro de Mysql en Foros del Web. Saludos amigos tengo un problema y es que tengo una tabla con una llave primaria doble en mysql pero no puedo evitar que se introduzcan ...
  #1 (permalink)  
Antiguo 14/09/2009, 09:31
 
Fecha de Ingreso: noviembre-2008
Ubicación: En algún lugar del disco duro.
Mensajes: 95
Antigüedad: 15 años, 5 meses
Puntos: 0
Sonrisa evitar duplicidad en clave primaria doble de mysql

Saludos amigos tengo un problema y es que tengo una tabla con una llave primaria doble en mysql pero no puedo evitar que se introduzcan valores de la siguiente manera:

serial_cartucho | cod_cartucho

12345 | 67890
12345 | 678901

es decir yo creo la primera dupla con los valores 12345 | 67890 y despues quiero evitar que alguien cree la dupla 12345 | 678901 es decir si ya utilize el serial_cartucho con una combinacion de cod_cartucho debo evitar que se se repita el mismo serial_cartucho con otra combinacion de cod_cartucho, es posible hacerlo yo trate de estas dos formas y no fue posible

CREATE TABLE `mov_recargas` (
`serial_cartucho` varchar( 30 ) NOT NULL ,
`cod_cartucho` varchar( 30 ) NOT NULL ,
`nom_cli` varchar( 60 ) NOT NULL ,
`tipo_cartucho` varchar( 20 ) NOT NULL ,
`fecha_r` date NOT NULL ,
`marca_impresora` varchar( 30 ) NOT NULL ,
`ref_impresora` varchar( 30 ) NOT NULL ,
`uso_impresora` varchar( 20 ) NOT NULL ,
`obs` varchar( 100 ) NOT NULL ,
`valor` bigint( 20 ) NOT NULL ,
`qty` int( 20 ) NOT NULL ,
UNIQUE ( `serial_cartucho` , `cod_cartucho` )
)

CREATE TABLE `mov_recargas` (
`serial_cartucho` varchar( 30 ) NOT NULL ,
`cod_cartucho` varchar( 30 ) NOT NULL ,
`nom_cli` varchar( 60 ) NOT NULL ,
`tipo_cartucho` varchar( 20 ) NOT NULL ,
`fecha_r` date NOT NULL ,
`marca_impresora` varchar( 30 ) NOT NULL ,
`ref_impresora` varchar( 30 ) NOT NULL ,
`uso_impresora` varchar( 20 ) NOT NULL ,
`obs` varchar( 100 ) NOT NULL ,
`valor` bigint( 20 ) NOT NULL ,
`qty` int( 20 ) NOT NULL ,
CONSTRAINT pk_mov_recargas PRIMARY KEY ( `serial_cartucho` , `cod_cartucho` )
)

gracias de antemano por su ayuda.
  #2 (permalink)  
Antiguo 14/09/2009, 09:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: evitar duplicidad en clave primaria doble de mysql

Eso no es una duplicación de clave primaria. 67890 y 678901 no son el mismo número, por tanto no existe duplicación (que por otro lado jamás podrá existir desde el momento en que lo defines como PK).
Tu problema está en que no tienes forma de corroborar si 67890 y/o 678901 son validos. En otras palabras, te faltaría una tabla de codigos de cartuchos, digamos `tipo_cartucho` desde donde validar ese campo, y que puedas definir como FK en mov_recargas
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 14/09/2009, 09:50
 
Fecha de Ingreso: noviembre-2008
Ubicación: En algún lugar del disco duro.
Mensajes: 95
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: evitar duplicidad en clave primaria doble de mysql

gracias por tu respuesta amigo ahora si me aclaraste la duda.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:45.