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

[SOLUCIONADO] Varios campos unicos en una tabla MyISAM

Estas en el tema de Varios campos unicos en una tabla MyISAM en el foro de Mysql en Foros del Web. Antes que nada déjenme decirles que mas que un problema es una duda/consulta. Damos por entendido que yo conozco la diferencia, ventajas y desventajas de ...
  #1 (permalink)  
Antiguo 08/02/2017, 09:22
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 11 años, 5 meses
Puntos: 46
Varios campos unicos en una tabla MyISAM

Antes que nada déjenme decirles que mas que un problema es una duda/consulta.

Damos por entendido que yo conozco la diferencia, ventajas y desventajas de MyISAM e InnoDB, pero resulta que generalmente desarrollo mis aplicaciones en MyISAM.

Tengo una tabla (empleado) a la cual me gustaría ponerle varias "FKs" a campos que deben ser únicos, claro esto se debe hacer en programación por el tipo de tabla pero solo quiero sacarme la espina.

Sera que puedo hacer varios campos únicos en la tabla como si fuesen FKs ?? Yo tengo como PK autoincrement el ID de cada registro, pero existen varios campos que quisiera declarar como llaves para evitar la duplicidad en la DB sin usar mucho codigo php, o saben de alguna forma de hacer facil esta tarea ??

Puedo en una misma DB tener tablas MyISAM e InnoDB y combinar selects con ellas ??

Cualquier recomendación sera de gran utilidad
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #2 (permalink)  
Antiguo 08/02/2017, 09:24
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Varios campos unicos en una tabla MyISAM

Sera que puedo hacer varios campos únicos en la tabla como si fuesen FKs ??

Si, por ejemplo cuando tienes una tabla con una llave primaria compuesta

Puedo en una misma DB tener tablas MyISAM e InnoDB y combinar selects con ellas ??

A lo que he leido y entiendo si es posible tener tablas de diferentes tipos en una DB, sobre los selects sobre ellas ahi si desconozco
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 08/02/2017, 09:41
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 11 años, 5 meses
Puntos: 46
Respuesta: Varios campos unicos en una tabla MyISAM

Muchas gracias Libras, tenia mucha pero mucha pena de preguntar algo que para mi no se podía, pero ya veo que me valió de mucho.

Encontré una teoría básica de llaves compuestas muy buena que voy a probar en este momento, si tengo mas dudas las pondré por aca

http://jjmojicamysql.blogspot.com/20...compuesta.html
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #4 (permalink)  
Antiguo 08/02/2017, 10:22
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 11 años, 5 meses
Puntos: 46
Respuesta: Varios campos unicos en una tabla MyISAM

Bueno hice lo que se supone se debe hacer

Código SQL:
Ver original
  1. ALTER TABLE `empleado`
  2. DROP PRIMARY KEY,
  3. ADD PRIMARY KEY (`id`, `expediente`, `codigo`, `dui`, `nit`);

La cuestión es que hoy ni el ID, ni nada es PK, acepta valores repetidos en todos los campos pero si vuelvo a poner solo el ID como PK entonces si, solo me permite un valor único, o con cualquier campo que ponga como PK

Fui de guatemala a guatepeor

Alguna idea estimados.

[EDIT]
He estado haciendo pruebas y ya vi cual es el problema, la cosa es que como es una PK compuesta, la validacion se hace si y solo si todos los campos que comprenden la PK son iguales, ejem.
Código:
id     exp     nit
01     123     123 // Este es el primer registro
02     123     123 // Este registro se inserta aunque lleven el mismo NIT y EXP
01     123     123 // Este registro no se inserta por ser todos los campos idénticos al primer registro
Asi es como funciona, pero en mi caso no me ayuda, ya que mi id, expediente, nit, dui, codigo, no se deben repetir nunca

Alguna otra forma a parte de por cada elemento hacer in select a la base y si no hay uno igual seguir con el otro y asi los 5 hasta que en el ultimo pueda hacer el insert total de todos los campos ?? (solo aclarando, se puede hacer un select de esos 5 campos y si no hay resultado continuar de lo contrario enviar alert) para que no me lo saquen
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Última edición por KATHYU; 08/02/2017 a las 11:00
  #5 (permalink)  
Antiguo 08/02/2017, 11:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Varios campos unicos en una tabla MyISAM

usa constraits :), lo de la llave compuesta era solo un ejemplo, una llave compuesta se compone de los 3 campos, si uno es diferente entonces se considera un registro diferente

http://stackoverflow.com/questions/6...lumns-in-mysql

https://www.techonthenet.com/mysql/unique.php
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 08/02/2017, 11:37
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 11 años, 5 meses
Puntos: 46
Respuesta: Varios campos unicos en una tabla MyISAM

Cita:
Iniciado por Libras Ver Mensaje
usa constraits :), lo de la llave compuesta era solo un ejemplo, una llave compuesta se compone de los 3 campos, si uno es diferente entonces se considera un registro diferente

http://stackoverflow.com/questions/6...lumns-in-mysql

https://www.techonthenet.com/mysql/unique.php
No me lo va a creer pero acabo de entrar al tema para decirles que lo había logrado con UNIQUE INDEX y usted me comparte lo mismo

Super bien, ya pude hacer que todos esos campos se validen de tal forma que hoy no habrá duplicidad de ningún campo de esos

Muy amable como siempre mi estimado libras
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Etiquetas: campos, forma, myisam, registro, select, tabla, unicos
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 23:30.