Drop table MySQL
Je veux supprimer une table avec drop table EMPLOYEE;
mais j'obtiens l'erreur: #1217 - Cannot delete or update a parent row: a foreign key constraint fails
Je regardai autour de moi sur l'internet pour montrer l'caché contraintes et trouvé:
CREATE TABLE `EMPLOYEE` (
`Ssn` int(9) NOT NULL,
`Dno` int(11) NOT NULL,
UNIQUE KEY`Ssn_8` (`Ssn`),
UNIQUE KEY`Dno_13` (`Dno`),
CONSTRAINT `EMPLOYEE_ibfk_1` FOREIGN KEY(`Dno`) REFERENCES `DEPARTMENT` (`Dnumber`),
CONSTRAINT `EMPLOYEE_ibfk_2` FOREIGN KEY(`Dno`) REFERENCES `DEPARTMENT` (`Dnumber`),
CONSTRAINT `EMPLOYEE_ibfk_3` FOREIGN KEY(`Dno`) REFERENCES `EMPLOYEE` (`Dno`),
CONSTRAINT `EMPLOYEE_ibfk_4` FOREIGN KEY(`Dno`) REFERENCES `EMPLOYEE` (`Dno`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `DEPARTMENT` (
`Dnumber` int(11) NOT NULL,
`Mgr_ssn` int(9) NOT NULL,
UNIQUE KEY`Mgr_ssn` (`Mgr_ssn`),
UNIQUE KEY`Dnumber` (`Dnumber`),
CONSTRAINT `DEPARTMENT_ibfk_1` FOREIGN KEY(`Mgr_ssn`) REFERENCES `EMPLOYEE` (`Ssn`),
CONSTRAINT `DEPARTMENT_ibfk_2` FOREIGN KEY(`Mgr_ssn`) REFERENCES `EMPLOYEE` (`Ssn`),
CONSTRAINT `DEPARTMENT_ibfk_3` FOREIGN KEY(`Mgr_ssn`) REFERENCES `DEPARTMENT` (`Mgr_ssn`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Après la découverte de cet j'ai essayé de déposer les contraintes, d'abord avec:
alter table EMPLOYEE drop contraint 'EMPLOYEE_ibfk_1';
mais je reçois:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''EMPLOYEE_ibfk_1'' at line 1
J'ai travaillé à l'abandon de cette table depuis plusieurs heures maintenant et fouillé de nombreux sujets sur l'internet. Les gens finissent par tomber la db, mais je suis non autorisé à déposer db ou créer une db.
- Ressemble que vous avez mal orthographié 'contrainte' dans votre ALTER...instruction DROP, si vous avez vraiment copié et collé.
- J'ai mal orthographié que lors de la saisie
Vous devez vous connecter pour publier un commentaire.
D'abord supprimer le
FOREIGN KEY
contraintes deDEPARTMENT
àEMPLOYEE
(notez la syntaxe bizarre, vous devez utiliserDROP FOREIGN KEY
mais avec la contrainte(!) identificateur):Puis déposez les
EMPLOYEE
table:Le problème avec votre code a été que vous avez utilisé
DROP CONSTRAINT
- ce qui est correct, autant que je sache, c'est la norme de la syntaxe SQL pourALTER TABLE
.MySQL cependant, "préfère"
DROP FOREIGN KEY
. En d'autres termes, il n'est pas conforme avec les normes dans ce cas.Clé étrangère noms doivent être indiqués avec backticks:
à l'aide de
'
guillemets simples tourne que dans une chaîne de caractères.EMPLOYEE_ibfk_1
' à la ligne 1Vous avez besoin pour supprimer les clés étrangères dans la table des Employés et aussi les étrangers ont les clés à la table des employés du Ministère et ensuite essayer de la faire tomber.
NOTE: il Faut supprimer les clés étrangères de la table référencée première dans le département de la table.
Également supprimer toutes les références de la part du Ministère de l'Employé dans le Département de la table en premier.
Ssn_8
;EMPLOYEE_ibfk_3
;