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:
* 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:
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.