Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/05/2009, 19:43
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Relacines entre tablas;

Tienes al menos tres problemas básicos:
1. No puedes ponerle ON DELETE SET NULL, si el campos es NOT NULL. Es incongruente y no lo admitirá.
2. El CHARSET por default de la versión es LATIN1, si no se lo indicas los tipos de columna se vuelve incompatibles y genera un error. Este error estaba parcialmente salvado.
3. Estas usando una sintaxis obsoleta en la construcción de la tabla; por caso, la cláusula TYPE dejó de ser usada hace mucho, lo que va es ENGINE. Si bien el parser de MySQL se encarga de resolver la mayor parte del problema, es mejor ajustarse siempre al estandar.
La sintaxis para la versión 5.1 y posteriores sería:
Código sql:
Ver original
  1. DROP TABLE IF EXISTS `modelo_vehiculos`;
  2. CREATE TABLE  `modelo_vehiculos` (
  3.   `modelo` VARCHAR(50) NOT NULL,
  4.   `idmodelo` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  5.   `categoria` VARCHAR(25) CHARACTER SET latin1 NOT NULL,
  6.   `unidades` INT(11) DEFAULT NULL,
  7.   PRIMARY KEY  (`modelo`),
  8.   UNIQUE KEY `modelo` (`modelo`),
  9.   UNIQUE KEY `idmodelo` (`idmodelo`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  11.  
  12. DROP TABLE IF EXISTS `vehiculos`;
  13. CREATE TABLE  `vehiculos` (
  14.   `matricula` VARCHAR(8) NOT NULL,
  15.   `codveh` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  16.   `modelo` VARCHAR(50) NOT NULL,
  17.   `categoria` VARCHAR(25) NOT NULL,
  18.   `costedia` DOUBLE NOT NULL,
  19.   `numplazas` INT(11) DEFAULT NULL,
  20.   `numpuertas` INT(11) DEFAULT NULL,
  21.   `maletas` INT(11) DEFAULT NULL,
  22.   `radio` tinyint(1) DEFAULT '1',
  23.   `aire` tinyint(1) DEFAULT '0',
  24.   `descincidencias` VARCHAR(1000) DEFAULT NULL,
  25.   `fecha` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  26.   `fechamod` TIMESTAMP NULL DEFAULT NULL,
  27.   `reservado` tinyint(1) DEFAULT '0',
  28.   `alquilado` tinyint(1) DEFAULT '0',
  29.   `foto` longblob,
  30.   PRIMARY KEY  (`codveh`),
  31.   UNIQUE KEY `matricula` (`matricula`),
  32.   UNIQUE KEY `codveh` (`codveh`),
  33.   KEY `ca_modelo` (`modelo`),
  34.   CONSTRAINT `ca_modelo` FOREIGN KEY (`modelo`) REFERENCES `modelo_vehiculos` (`modelo`) ON UPDATE CASCADE
  35. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)