[SQL] suppression de table - père-fils

Résolu
azerty0 Messages postés 1274 Date d'inscription   Statut Membre Dernière intervention   -  
azerty0 Messages postés 1274 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai réglé quelques soucis avec mes contraintes d'intégrité hier, mais voila que je ne peux plus supprimer des tables a cause de ces contraintes. Est-ce possible de réussir a delete cependant une table père ???

Voici le code :

        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 ;
	
	
	-- 
	-- Structure de la table 'entree'
	-- Une entree correspond a un creneau horaire (heures entieres)
	-- 

	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 ;	


Impossible de supprimer la table date, phpmyadmin me pond cette erreur :

#1217 - Impossible de supprimer un enregistrement père : une constrainte externe l'empèche 


J'ai donc essayé en essayant de supprimer la containte de la table entree juste avant le DROP de la table date:

ALTER TABLE entree DROP CONSTRAINT 'fk_entree_date' ;


Mais il me dit qu'il y a une erreur de syntaxe... =/
A voir également:

3 réponses

azerty0 Messages postés 1274 Date d'inscription   Statut Membre Dernière intervention   75
 
Pour respecter l'intégrité référencielle, impossible de supprimer les tables fils, j'ai donc désactiver les clés étrangères, créé mes tables et réactivé les clés :

SET FOREIGN_KEY_CHECKS=0;

Supression IF EXISTS
CREATION

SET FOREIGN_KEY_CHECKS=1;
2