Haber ... tengo un modelo de una BD en BDDesigner 4 ... resulta que cuando genero el codigo en SQL y lo ejecuto en un servidor mysql 5 todo bien (el motor es InnoDB).
Con esta instruccion vemos cuales son los FK de las tablas.
SELECT K.REFERENCED_TABLE_NAME, K.COLUMN_NAME, K.REFERENCED_COLUMN_NAME FROM KEY_COLUMN_USAGE K WHERE K.TABLE_NAME='tabla' AND K.CONSTRAINT_NAME NOT IN('PRIMARY')
Pues resulta que el modelo esta con relaciones y todo eso .. y cuando ejecuto la consulta anterior no muestra nada de nada (aun habiendo relaciones en la tabla, esto lo probe en un servidor mysql
superior a 4 (de 5 para arriba)).
Este es un script generado por DBDesigner 4:
CREATE TABLE IF NOT EXISTS `usuario` (
`codigo` INT(11) NOT NULL AUTO_INCREMENT,
`car_codigo` INT(11) NOT NULL,
`per_codigo` INT(11) NOT NULL,
`idusuario` VARCHAR(20) NOT NULL,
`fecreg` DATE NOT NULL,
`fecing` DATE DEFAULT NULL,
`estado` CHAR(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`codigo`),
KEY `usuario_FKIndex1` (`per_codigo`),
KEY `usuario_FKIndex2` (`car_codigo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Cuando ejecuto el script para saber las FK retorna un valor nulo, pero cuando creo la tabla de la siguiente forma (elaborada manualmente) :
CREATE TABLE IF NOT EXISTS `usuario` (
`codigo` INT(11) NOT NULL AUTO_INCREMENT,
`car_codigo` INT(11) NOT NULL,
`per_codigo` INT(11) NOT NULL,
`idusuario` VARCHAR(20) NOT NULL,
`fecreg` DATE NOT NULL,
`fecing` DATE DEFAULT NULL,
`estado` CHAR(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`codigo`),
FOREIGN KEY (car_codigo) REFERENCES cargo(codigo),
FOREIGN KEY (per_codigo) REFERENCES personal(codigo)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Aqui al ejecutar la consulta anterior si muestra los FK.
Gracias.