Supprimer toutes les clés étrangères dans la base de données (MySql)
Je voudrais renommer une colonne dans un tableau qui est une clé étrangère à de nombreuses tables. Apparemment, cela n'est possible que si vous supprimez les contraintes, comme je l'ai appris dans ce lien.
Je ne veux pas supprimer tous les constratints manuellement est-il un moyen de supprimer toutes les contraintes de clé étrangère dans la base de données?
J'ai aussi essayé de SET FOREIGN_KEY_CHECKS=0;
mais je n'ai toujours pas renommer la colonne.
source d'informationauteur Borut Flis
Vous devez vous connecter pour publier un commentaire.
De l'exécution de la requête suivante
va vous montrer toutes les contraintes (avec le nom de la colonne, le type de contrainte, le tableau et le schéma) qui existent dans votre base de données. Vous remarquerez ces colonnes:
Alors, si vous avez l'intention de supprimer chaque contrainte vous avez le référencement de votre colonne, vous devriez envisager la REFERENCED_* colonnes et exécuter quelque chose comme:
http://dev.mysql.com/doc/refman/5.1/en/key-column-usage-table.html
Vous pouvez l'utiliser SQL pour générer MODIFIER les TABLES (
!!YOUR_SCHEMA_HERE!!
doit être remplacé par votre schéma):Il va générer SQL comme ceci:
Vous Pouvez Essayer d'utiliser Comme de la Suite ..
Vous pouvez également essayer avec une Clé de Référence.Comme d' .....
La requête suivante va construire la syntaxe correcte automatiquement.
Assurez-vous de mettre votre vraie DB nom du schéma dans le
WHERE
condition.Juste exécuter chaque ligne retournée et tous vos
FOREIGN KEYS
aura disparu.Je laisse l'inverse (en les ajoutant à l'arrière) comme un exercice pour vous.
Si vous avez besoin d'schéma indépendant, vous pouvez écrire:
TABLE_SCHEMA=DATABASE()
pour obtenir le courant DB active nom