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

Modififcar Primary Key Cmopuesta en MYSQL

Estas en el tema de Modififcar Primary Key Cmopuesta en MYSQL en el foro de Mysql en Foros del Web. Holas a todos!!! Tengo una duda o mejor dicho un apregunta con respecto a las llaves primarias compuestas en mysql. Tengo un tabla la cual ...
  #1 (permalink)  
Antiguo 14/01/2010, 13:47
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 11 años, 4 meses
Puntos: 10
Modififcar Primary Key Cmopuesta en MYSQL

Holas a todos!!!

Tengo una duda o mejor dicho un apregunta con respecto a las llaves primarias compuestas en mysql.

Tengo un tabla la cual tiene una llave primaria compuesta con sus respectivas llaves foraneas, de cada una de las llaves que conforman mi llave primaria, ahora bien mi pregunta es la siguiente:

Como puede hacer para modificar esa llave primaria compuesta y agregarle un campo mas o se tendria que eliminar toda la tabla y crearla de nuevo con la llave primaria que debe ser???

De antemano gracias!!!!

Saludos.
  #2 (permalink)  
Antiguo 14/01/2010, 14:07
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 10 años, 11 meses
Puntos: 360
Respuesta: Modififcar Primary Key Cmopuesta en MYSQL

Con alter table puedes hacer todo esto.

ejemplo:
Código MySQL:
Ver original
  1. mysql> create table compuesta(id integer,cedula integer);
  2. Query OK, 0 rows affected (0.11 sec)
  3.  
  4. mysql> alter table compuesta add primary key (id,cedula);
  5. Query OK, 0 rows affected (0.08 sec)
  6. Records: 0  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> alter table compuesta drop primary key;
  9. Query OK, 0 rows affected (0.03 sec)
  10. Records: 0  Duplicates: 0  Warnings: 0
  11.  
  12. mysql> alter table compuesta add column serie integer;
  13. Query OK, 0 rows affected (0.02 sec)
  14. Records: 0  Duplicates: 0  Warnings: 0
  15.  
  16. mysql> alter table compuesta add primary key (id,cedula,serie);
  17. Query OK, 0 rows affected (0.01 sec)
  18. Records: 0  Duplicates: 0  Warnings: 0
  19.  
  20. mysql>

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 14/01/2010, 15:13
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 11 años, 4 meses
Puntos: 10
Respuesta: Modififcar Primary Key Cmopuesta en MYSQL

Hola huesos52!!

Gracias por tu respuesta pero eso ya lo he intentado y me marca error.

Este es el error quemarca:

Error 1025(HY0000): Error on rename of '.\miDatabase\#sql-b30_4' to '.\miDatabase\mitabla' (errno: 150)



La llave primaria que tengo es una llave foranea la cual le agrego un campo clave mas, los cuales formarian dicha llave primaria compuesta.

Ahora a esa llave primaria le quiero agregar un campo mas.

Y no se como poder hacerlo!!!!!

Gracias de antemano.

Saludos
  #4 (permalink)  
Antiguo 14/01/2010, 15:17
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 10 años, 11 meses
Puntos: 360
Respuesta: Modififcar Primary Key Cmopuesta en MYSQL

Huancho12

La verdad creo que la solución que te doy es independiente si el campo es foraneo o no. En pocas palabras, es necesario eliminar la llave primaria (sin eliminar la tabla) y después reconstruirla. Debes tener en cuenta que si la tabla tiene datos que influyan en la llave no te la dejará crear.

Por que no pones un ejemplo de lo que tienes, las operaciones que haces y el error que te sale en consola?

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 14/01/2010, 16:00
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 11 años, 4 meses
Puntos: 10
Respuesta: Modififcar Primary Key Cmopuesta en MYSQL

Hola huesos52!!

Mira aqui te dejo como estan mis tablas involucradas.


tabla1
*tbl1_id1 int pk
*tbl1_id2 tinyint pk
*tbl1_id3 smallint pk
*tbl1_id4 int pk
*tbl1_kmpo5 blob
*tbl1_kmpo6 blob


tabla2
*tbl2_id1 int pk
*tbl2_desc blob
*tbl2_objetivos blob


De estas dos tablas se crea otra la cual contienes de ambas las llaves primarias, las cuales a su vez se convierten o pasan a ser llaves foraneas y llaves primarias a la ves.

tabla3
*tbl31_id1 int pk
*tbl31_id2 tinyint pk
*tbl31_id3 smallint pk
*tbl31_id4 int pk

*tbl32_id1 int pk
*tbl3_num int
*tbl3_estrategi blob
*tbl3_funcion blob


Ahora, en esta tabla la llave primaria compuesta quedaria asi:

primary key(tbl31_id1,tbl31_id2 ,tbl31_id3,tbl31_id4,
tbl32_id1);

Mis llaves foraneas:

Desde la primera tabla:

foreign key(tbl31_id1,tbl31_id2 ,tbl31_id3,tbl31_id4,) references tabla1 (tbl1_id1,tbl1_id2 ,tbl1_id3,tbl1_id4,)


Desde la segunda tabla:

foreign key(tbl32_id1) references tabla2(tbl2_id1)

Y lo que no se, es como modificar mi llave primaria compuesta en la tercera tabla para agregarle un campo más. Ejemplo:

primary key(tbl31_id1,tbl31_id2 ,tbl31_id3,tbl31_id4,
tbl32_id1,tbl3_num);


Espero me haya explicado bien !!!!.

De antemano gracias.

Saludos

Etiquetas: key
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 08:00.