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

Résolu/Fermé
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 29 juin 2010 à 09:13
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 30 juin 2010 à 09:14
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 samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
30 juin 2010 à 09:14
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