Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/08/2010, 06:11
guif
 
Fecha de Ingreso: julio-2005
Mensajes: 140
Antigüedad: 19 años, 3 meses
Puntos: 0
El "ON UPDATE CASCADE ON DELETE CASCADE" no funciona

Hola!

Tengo creada la siguiente estructura de tablas:

Código:
-- CREACION TABLA `CITIES` ( CIUDADES )
CREATE TABLE `CITIES` (
        `ID_CITY_PK` INT NOT NULL AUTO_INCREMENT,
        `CITY` VARCHAR(100),
        `LATITUDE` FLOAT (10,6) NOT NULL,
        `LONGITUDE` FLOAT (10,6) NOT NULL,
        `ID_COUNTRY` INT NOT NULL,
        PRIMARY KEY (`ID_CITY_PK`),
        FOREIGN KEY (`ID_COUNTRY`) REFERENCES `COUNTRIES`(`ID_COUNTRY_PK`) ON UPDATE CASCADE ON DELETE CASCADE
);

-- CREACION TABLA `COUNTRIES` ( PAISES )
CREATE TABLE `COUNTRIES` (
        `ID_COUNTRY_PK` INT NOT NULL AUTO_INCREMENT,
        `COUNTRY` VARCHAR(100),
        `LATITUDE` FLOAT (10,6) NOT NULL,
        `LONGITUDE` FLOAT (10,6) NOT NULL,
        `ID_CONTINENT` INT NOT NULL,
        PRIMARY KEY (`ID_COUNTRY_PK`),
        FOREIGN KEY (`ID_CONTINENT`) REFERENCES `CONTINENTS`(`ID_CONTINENT_PK`) ON UPDATE CASCADE ON DELETE CASCADE
);

-- CREACION TABLA `CONTINENTS` ( CONTINENTES )
CREATE TABLE `CONTINENTS` (
        `ID_CONTINENT_PK` INT NOT NULL AUTO_INCREMENT,
        `CONTINENT` VARCHAR(100),
        `LATITUDE` FLOAT (10,6) NOT NULL,
        `LONGITUDE` FLOAT (10,6) NOT NULL,
        PRIMARY KEY (`ID_CONTINENT_PK`)
);

-- CREACION TABLA `USERS` ( USUARIOS )
CREATE TABLE `USERS` (
        `ID_USER_PK` INT NOT NULL AUTO_INCREMENT,
        `NAME` VARCHAR(40),
        `EMAIL` VARCHAR(40),
        `PASSWORD` VARCHAR(20),
        `ID_CITY` INT NOT NULL,
        PRIMARY KEY (`ID_USER_PK`),
        FOREIGN KEY (`ID_CITY`) REFERENCES `CITIES`(`ID_CITY_PK`) ON UPDATE CASCADE ON DELETE CASCADE
);

Al realizar los inserts en el siguiente orden me funciona correctamente (me da un warning, pero creo que es por el FLOAT (10,6), pero este no es el problema)

Código:
INSERT INTO `CONTINENTS` (`ID_CONTINENT_PK`, `CONTINENT`, `LATITUDE`, `LONGITUDE`) VALUES ('','Europa','54.525961','15.255119');
INSERT INTO `COUNTRIES` (`ID_COUNTRY_PK`, `COUNTRY`, `LATITUDE`, `LONGITUDE`, `ID_CONTINENT`) VALUES ('','España','40.463667','-3.74922','');
INSERT INTO `CITIES` (`ID_CITY_PK`, `CITY`, `LATITUDE`, `LONGITUDE`, `ID_COUNTRY`) VALUES ('','Barcelona','41.387917','2.169919','');
INSERT INTO `USERS` (`ID_USER_PK`,`NAME`,`EMAIL`,`PASSWORD`,`ID_CITY`) VALUES ('', 'Manuel Fernandez','[email protected]','123456','Barcelona');
El Problema es que el ON UPDATE CASCADE ON DELETE CASCADE no se modifican en las tablas correspondientes y me aparece siempre un 0.
Alguna idea?