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

Problema con UPDATE y entradas duplicadas

Estas en el tema de Problema con UPDATE y entradas duplicadas en el foro de Mysql en Foros del Web. Hola, tengo una tabla asi: idorg, numero, utilidad (otros..). Estos tres campos son clave primaria. Los datos son del estilo: 1, 1, 5 1, 2, ...
  #1 (permalink)  
Antiguo 24/03/2009, 08:01
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Problema con UPDATE y entradas duplicadas

Hola, tengo una tabla asi:
idorg, numero, utilidad (otros..). Estos tres campos son clave primaria.

Los datos son del estilo:
1, 1, 5
1, 2, 5
1, 3, 3
1, 4, 7

2,1,9
2,2,3

El numero es siempre creciente de esta forma. El problema surge al querer
insertar un registro nuevo:
1, 1, 5
xxxxxxx -> UPDATE ... numero=numero+1 WHERE numero >1 AND idorg=1
1, 2, 5
1, 3, 3
1, 4, 7
y luego realizaria el INSERT.

Pero al actualizar la clave primaria se repite:
Cambia el numero 2 por el 3:
1, 3, 5 --> error, eso ya existe.

Podria desactivar momentaneamente al igual que se hace con las foreign keys las primary keys? Deberia de hacerlo de otra manera? El diseño de la tabla no es correto?


Muchas Gracias


Un saludo
  #2 (permalink)  
Antiguo 24/03/2009, 08:28
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: Problema con UPDATE y entradas duplicadas

Un saludo julms.

No puedes actualizar la información de una llave primaria.
Que tratas de hacer?
Cual es tu objetivo?
Por que debes actualizar primero un registro antes de insertar el otro?
  #3 (permalink)  
Antiguo 24/03/2009, 09:02
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con UPDATE y entradas duplicadas

Hola. Gracias por interesarte.

He colocado como clave primaria numeros, que indica el orden en una serie de pasos.

Paso 1 -> Utilidad 3
Paso 2 -> Utilidad 4
Paso 3 -> Utilidad 3

El problema es insertar un nuevo Paso entre los anteriores. Supongo que esto sera un problema con una solucion "ya pensada" (digo yo jeje)

Ademas tengo que tener en cuenta que es posible definir varias Series, entonces:

Clave primaria: idserie, paso, idutilidad, pero el problema es insertar. Defino otra columna que indique el orden, sin ser clave primaria? y como controlo que no se repita el paso en cada serie?

Gracias de nuevo.
  #4 (permalink)  
Antiguo 24/03/2009, 09:15
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: Problema con UPDATE y entradas duplicadas

Vamos a ver si te entendí.

Tu quieres por ejemplo que en una tabla con los datos:

1, 1, 5
1, 2, 5
1, 3, 3
1, 4, 7
---Insertar en esta linea un registro como 1,5,9
2,1,9
2,2,3

Si es eso lo que quieres, no te preocupes mucho por eso. Insertalo donde quieras, al momento de mostrarlos le puedes dar un orden a la consulta.

Por ejemplo:

select *from tabla order by campo_que_quieras;

Si primero tienes que ordenarlo bajo un parametro y despues bajo otro parametro sería:

select *from tabla order by campo_que_quieras, segundo_campo_que_quieras;

Espero sea ese tu problema.
  #5 (permalink)  
Antiguo 24/03/2009, 09:33
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con UPDATE y entradas duplicadas

Es eso, pero que tambien puedas añadir un registro en el medio de los existentes.

En tu ejemplo, seria:
1, 1, 5
1, 2, 5
------------> Insertar aqui, hay que hacer hueco, desplazar 3,4 que ahora sean 4,5
1, 3, 3
1, 4, 7
2,1,9
2,2,3

Y despues ya se inserta... me explico?

Gracias
  #6 (permalink)  
Antiguo 24/03/2009, 10:00
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: Problema con UPDATE y entradas duplicadas

Julms, todo eso lo controlas al momento de hacer la consulta.
No tienes que tener en cuenta un orden al momento de ingresar los datos, solo lo debes tener en cuenta un orden al momento de mostrar los datos como te dije en el post anterior.
  #7 (permalink)  
Antiguo 24/03/2009, 10:12
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con UPDATE y entradas duplicadas

Entonces, me quieres decir que agregue otro campo, "ORDEN", y que ordene la consulta en base a este campo, mientras que en el otro, siempre los nuevos se añaden al final?

Gracias
  #8 (permalink)  
Antiguo 24/03/2009, 10:22
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: Problema con UPDATE y entradas duplicadas

Lo que te quiero decir, es que con base en tus datos puedes ordenarlos como quieras.
Por ejemplo:
create table persona(cedula integer, nombre text);
insert into persona values(1,'santiago');
insert into persona values(2,'daniel');
insert into persona values(5,'diego');
insert into persona values(3,'jose');

Como puedes observar, se ha ingresado primero el codigo 5 antes del 3.
si haces un "select *from persona" te retorna:

cedula-Nombre
1-Santiago
2-Daniel
5-diego
3-jose

Pero si haces un "select *from persona order by cedula" te retorna:

cedula-Nombre
1-Santiago
2-Daniel
3-jose
5-diego

que creo es lo que deseas hacer.

Un saludo
  #9 (permalink)  
Antiguo 24/03/2009, 10:37
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con UPDATE y entradas duplicadas

Si, te entiendo, pero tu a mi no jeje.

Imagina en el ejemplo que has puesto que cedula y nombre son ambos clave primaria.

Ahora imagina q tienes esto:
1-Santiago
2-Daniel
3-jose
4-jose
5-diego

Select * from tabla Order by cedula. Perfecto.

Imagina que quieres insertar un otro registro y que salga en la segunda posicion.

insert (cedula,nombre) into tabla values (2,'Otro nombre');

Ahora Select * from tabla Order by cedula quedaria asi:

1-Santiago
2-Daniel
2-Otro nombre
3-jose
4-jose
5-diego

Mal. cedula no es creciente, esta repetido. lo muestres como lo muestres al usuario.

Me entiendes?
  #10 (permalink)  
Antiguo 24/03/2009, 10:47
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: Problema con UPDATE y entradas duplicadas

Cita:
Imagina en el ejemplo que has puesto que cedula y nombre son ambos clave primaria.
Lo anterior no es posible. Primary key solo puede ser un campo de la tabla.

si trataras de hacer esto
Cita:
insert (cedula,nombre) into tabla values (2,'Otro nombre');
No te lo va a permitir (2 ya existe), ya que si es primary key, quiere decir que ademas de ser la llave primaria también es única y no permitirá otro registro con la misma llave.

Por que no pones toda la estructura de tus tablas, como están relacionadas, con nombres y tipos de datos? Asi podemos darle una solución a tu problema.
  #11 (permalink)  
Antiguo 24/03/2009, 10:56
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con UPDATE y entradas duplicadas

si se puede, mira este link
http://www.forosdelweb.com/f86/prima...campos-429650/

Gracias de todas formas por tu tiempo. Al final casi seguro que añado otro campo y listo.
  #12 (permalink)  
Antiguo 24/03/2009, 11:14
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con UPDATE y entradas duplicadas

Ais, parece que la solucion pasa por utilizar ORDER BY en el UPDATE y que actualize primero los ids mas altos y luego los mas bajos. Por si alguien tiene un problema parecido aqui queda dicho.


Saludos
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 01:02.