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

problema al eliminar un elemento

Estas en el tema de problema al eliminar un elemento en el foro de Mysql en Foros del Web. Hola a todos! tengo la siguiente base de datos. Código: CREATE TABLE USUARIO( idUsuario int(15) NOT NULL AUTO_INCREMENT, userName varchar(50) NOT NULL, password varchar(50) NOT ...
  #1 (permalink)  
Antiguo 22/04/2009, 03:09
 
Fecha de Ingreso: enero-2009
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 0
problema al eliminar un elemento

Hola a todos! tengo la siguiente base de datos.

Código:
CREATE TABLE USUARIO(
	idUsuario       int(15) NOT NULL AUTO_INCREMENT,
	userName        varchar(50) NOT NULL,
	password        varchar(50) NOT NULL,
	email           varchar(100) NOT NULL,
        PRIMARY KEY  (idUsuario)
);

CREATE TABLE PRODUCTO(
	idProducto              int(15) NOT NULL,
	fk_idUsuario           int(15) NOT NULL,
	nombreProducto    varchar(50),
        precio                    int(5),
        PRIMARY KEY (idProducto, fk_idUsuario),
	INDEX (fk_idUsuario),
  	FOREIGN KEY (fk_idUsuario)
    	REFERENCES USUARIO(idUsuario)

	
);

CREATE TABLE PREFERENCIAS(
	idPreferencias		int(15) NOT NULL AUTO_INCREMENT,
	fk_idUsuario		int(15) NOT NULL,
	fk_idProducto		int(15) NOT NULL,
	nombrePreferencia 	varchar(100),
	valorPreferencia	varchar(100),
	PRIMARY KEY (idPreferencias),
        INDEX (fk_idUsuario),
	FOREIGN KEY (fk_idUsuario)
	REFERENCES USUARIO(idUsuario),
	INDEX (fk_idProducto),
	FOREIGN KEY (fk_idProducto)
	REFERENCES PRODUCTO(idProducto)

);
Lo que quiero es eliminar por ejemplo de la tabla PRODUCTO un producto de un usuario entonces lo que hago es primero borrar de la tabla PREFERENCIAS el producto de ese usuario y despues borrarlo de la de PRODUCTO.

Código:
DELETE FROM preferencias WHERE (fk_idUsuario=1 && fk_idProducto=2);

DELETE FROM producto WHERE (fk_idUsuario=1 && idPrdoducto=2);
Pero claro al ser clave foranea no me deja borrarla de la tabla producto...

¿Qué tendría que hacer para poderlo borrar?

Gracias.
  #2 (permalink)  
Antiguo 22/04/2009, 06:31
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 al eliminar un elemento

Dablin..

Cuando declares la relación en la llave foranea adicionale on delete cascade.

En tu tabla quedaría así:

Código mysql:
Ver original
  1. CREATE TABLE PREFERENCIAS(
  2.     idPreferencias      int(15) NOT NULL AUTO_INCREMENT,
  3.     fk_idUsuario        int(15) NOT NULL,
  4.     fk_idProducto       int(15) NOT NULL,
  5.     nombrePreferencia   varchar(100),
  6.     valorPreferencia    varchar(100),
  7.     PRIMARY KEY (idPreferencias),
  8.         INDEX (fk_idUsuario),
  9.     FOREIGN KEY (fk_idUsuario)
  10.     REFERENCES USUARIO(idUsuario),
  11.     INDEX (fk_idProducto),
  12.     FOREIGN KEY (fk_idProducto)
  13.     REFERENCES PRODUCTO(idProducto) on delete cascade
  14.  
  15. );


Espero te sirva.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 22/04/2009, 08:08
 
Fecha de Ingreso: enero-2009
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema al eliminar un elemento

Gracias! huesos52 con el on delete cascade ya no tengo ningún problema.

Un saludo de Dablin.
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 15:15.