[SQL] eliminación de tabla - padre-hijo

Resuelto
Hola,

he solucionado algunos problemas con mis restricciones de integridad ayer, pero ahora no puedo eliminar tablas a causa de esas restricciones. ¿Es posible lograr eliminar sin embargo una tabla padre ???

Aquí está el código :

 DROP TABLE IF EXISTS 'date'; CREATE TABLE 'date' ( 'id_date' int(10) unsigned NOT NULL auto_increment, 'formate' date NOT NULL , 'jour' varchar(8) default NULL, INDEX formate_ind ('formate'), CONSTRAINT pk_date PRIMARY KEY ('id_date') ) ENGINE =InnoDB DEFAULT CHARSET=utf8 ; -- -- Estructura de la tabla 'entree' -- Una entrada corresponde a un intervalo horario (horas enteras) -- DROP TABLE IF EXISTS 'entree'; CREATE TABLE 'entree' ( 'ent_id' int(10) unsigned NOT NULL auto_increment , 'ent_id_date' date NOT NULL , 'ent_heure_deb' int(2) NOT NULL, 'ent_heure_fin' int(2) NOT NULL, CONSTRAINT pk_entree PRIMARY KEY ('ent_id'), INDEX ent_id_ind ('ent_id'), CONSTRAINT fk_entree_date FOREIGN KEY ('ent_id_date') REFERENCES 'date' ('formate') ON DELETE CASCADE ) ENGINE =InnoDB DEFAULT CHARSET=utf8 ; 


Imposible eliminar la tabla date, phpmyadmin me da este error :

#1217 - Impossible eliminar un registro padre: una restricción externa lo impide 


Por lo tanto intenté eliminar la restricción de la tabla entree justo antes del DROP de la tabla date:

ALTER TABLE entree DROP CONSTRAINT 'fk_entree_date' ;


Pero me dice que hay un error de sintaxis... =/

3 respuestas

  • Votos
  • Fecha
  • Fecha descendente
  1. Para respetar la integridad referencial, es imposible eliminar las tablas hijas, así que desactivé las claves foráneas, creé mis tablas y reactivé las claves:

    SET FOREIGN_KEY_CHECKS=0;

    Supresión IF EXISTS
    CREACIÓN

    SET FOREIGN_KEY_CHECKS=1;