Autor Tema: problema con mysql (SOLUCIONADO)  (Leído 3541 veces)

Desconectado vlad

  • Member
  • ***
  • Mensajes: 305
problema con mysql (SOLUCIONADO)
« en: 24 de Agosto de 2010, 08:37:44 pm »
Muy buenas. No se si este es sitio adecuado, si no es así movedlo donde estiméis oportuno.

Estoy programando una cosilla en java con acceso a una base de datos mysql. El problema lo tengo a la hora de definir las foreign keys y la acción predeterminada cuando hay un borrado o una actualización, es decir, cuando borro una fila de una tabla que es clave ajena en otra. No hay problema con el ON DELETE CASCADE (se carga las filas de la otra tabla sin problemas), pero no hay manera de hacer funcionar ni el ON DELETE SET NULL ni ON DELETE NO ACTION. Os pongo el código de creación de las tablas:

Código: [Seleccionar]
* ARCHIVERO: */
                ConexionBD.stmt.executeUpdate("CREATE TABLE archivero (nombre VARCHAR(30) NOT NULL,apellidos VARCHAR(45) NOT NULL," +
                        "nif VARCHAR(9) NULL,fecha_incorporacion DATE NULL,pass VARCHAR(50) NOT NULL,PRIMARY KEY(nombre, apellidos))ENGINE=InnoDB;");

/* EXPEDIENTE */
                ConexionBD.stmt.executeUpdate("CREATE TABLE expediente (cod_expediente INTEGER NOT NULL AUTO_INCREMENT,caja_n_caja INTEGER NOT NULL," +
                        "archivero_nombre VARCHAR(30) NOT NULL,archivero_apellidos VARCHAR(45) NOT NULL,cod_arch VARCHAR(100) NULL," +
                        "descripcion VARCHAR(250) NULL,estado VARCHAR(45) NULL,completo VARCHAR(2) NULL,fecha DATE NULL,PRIMARY KEY(cod_expediente, caja_n_caja)," +
                        "FOREIGN KEY (archivero_nombre,archivero_apellidos) REFERENCES archivero(nombre,apellidos) ON UPDATE CASCADE ON DELETE NO ACTION)" +
                        "ENGINE=InnoDB,AUTO_INCREMENT = 1;");
 

El programa en java me tira una excepción que me dice:

Código: [Seleccionar]
Cannot delete or update a parent row: a foreign key constraint fails (`z/expediente`, CONSTRAINT `expediente_ibfk_1`
FOREIGN KEY (`archivero_nombre`, `archivero_apellidos`) REFERENCES `archivero` (`nombre`, `apellidos`) ON DELETE NO ACTION ON UPDATE CASCADE)

salu2.
Es más fácil apoderarse del comandante en jefe de un ejército que despojar a un miserable de su libertad. (Confucio)

Desconectado Aj

  • Administrator
  • ******
  • Mensajes: 3624
  • Avatar by Jaleo
    • Mis chorradicas
Re: problema con mysql
« Respuesta #1 en: 25 de Agosto de 2010, 01:51:58 pm »
Hummmm el ON DELETE SET NULL creo que igual es imposible, porque los campos los declaras NOT NULL y el NO ACTION, pues hace lo que hace, nada, por lo que casca por la referencia...  :-D :-D :-D

Es claro como el agua  :-D :-D :-D

Desconectado vlad

  • Member
  • ***
  • Mensajes: 305
Re: problema con mysql
« Respuesta #2 en: 25 de Agosto de 2010, 07:49:52 pm »
Hummmm el ON DELETE SET NULL creo que igual es imposible, porque los campos los declaras NOT NULL

Madre mia... acaban de salir a relucir mis conocimientos de MySQL...  :blind: :blind: :blind: :blind:
Ahora funciona perfectamente Aj, mil gracias. :-)
Es más fácil apoderarse del comandante en jefe de un ejército que despojar a un miserable de su libertad. (Confucio)

Desconectado Aj

  • Administrator
  • ******
  • Mensajes: 3624
  • Avatar by Jaleo
    • Mis chorradicas
Re: problema con mysql
« Respuesta #3 en: 26 de Agosto de 2010, 11:57:51 am »
Hummmm el ON DELETE SET NULL creo que igual es imposible, porque los campos los declaras NOT NULL

Madre mia... acaban de salir a relucir mis conocimientos de MySQL...  :blind: :blind: :blind: :blind:
Ahora funciona perfectamente Aj, mil gracias. :-)

De nada, a mandar  :-d :-d :-d

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License