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

Quien es el indice aca ??? (caso especial)

Estas en el tema de Quien es el indice aca ??? (caso especial) en el foro de Mysql en Foros del Web. Amigos : tengo un problema muy particular... una tabla donde los 3 campos no pueden ser iguales (eso seria duplicar el registro) pero ninguno por ...
  #1 (permalink)  
Antiguo 31/07/2009, 13:22
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Pregunta Quien es el indice aca ??? (caso especial)

Amigos: tengo un problema muy particular... una tabla donde los 3 campos no pueden ser iguales (eso seria duplicar el registro) pero ninguno por separado puede ser la PRIMARY KEY

Se me ocurrió crear un campo "control" que es la concatenacion de los valores de los otros 3 campos de forma que esa pueda ser una PRIMARY KEY. Alguna otra opcion ?

Código tabla enlaces:
Ver original
  1. CREATE TABLE IF NOT EXISTS `enlaces` (
  2.   `url` varchar(200) collate latin1_general_ci NOT NULL,
  3.   `anchor` varchar(100) collate latin1_general_ci NOT NULL,
  4.   `id_post_enlazante` int(11) NOT NULL,
  5.   `control` varchar(400) collate latin1_general_ci NOT NULL,
  6.   PRIMARY KEY  (`control`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

GRACIAS!
__________________
Salu2!

Última edición por Italico76; 31/07/2009 a las 13:42
  #2 (permalink)  
Antiguo 31/07/2009, 13:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Quien es el indice aca ??? (caso especial)

Haz una primary key compuesta.

así:
Código sql:
Ver original
  1. CREATE TABLE IF NOT EXISTS `enlaces` (
  2.   `url` VARCHAR(200) COLLATE latin1_general_ci NOT NULL,
  3.   `anchor` VARCHAR(100) COLLATE latin1_general_ci NOT NULL,
  4.   `blog_enlazante` INT(11) NOT NULL,
  5.   `control` VARCHAR(400) COLLATE latin1_general_ci NOT NULL,
  6.   PRIMARY KEY  (`control`,`url`,`anchor`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

De esta foorma, no se permiten registros que se repita una secuencia que ya exista con estos campos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 31/07/2009, 13:42
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Quien es el indice aca ??? (caso especial)

BUENISIMO!!! muchas gracias! hice asi y me quedo perfecto

Cita:
ALTER TABLE `enlaces` ADD PRIMARY KEY (`url`,`anchor`,`id_post_enlazante`)
__________________
Salu2!
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:50.