Requête pour trouver les clés étrangères

J'ai une base de données où j'ai besoin d'abandonner un peu de clés étrangères, mais je ne sais pas à l'avance si les clés étrangères existent encore.

J'ai trouvé des procédures stockées (http://forums.mysql.com/read.php?97,218825,247526) qui fait l'astuce, mais je ne veux pas créer une procédure stockée pour cela.

J'ai essayé d'utiliser la requête à l'intérieur de la procédure stockée, mais j'obtiens une erreur à l'aide de "if EXISTS (SELECT NULL, etc.. etc...

Puis-je utiliser uniquement IF EXISTS dans des procédures stockées?


droit maintenant, la seule chose que je peux courir est

SELECT * FROM information_schema.TABLE_CONSTRAINTS 
WHERE information_schema.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY' 
AND information_schema.TABLE_CONSTRAINTS.TABLE_SCHEMA = 'myschema'
AND information_schema.TABLE_CONSTRAINTS.TABLE_NAME = 'mytable';

et j'ai essayé ce trop

IF EXISTS (SELECT NULL FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = DATABASE() AND CONSTRAINT_NAME = parm_key_name) THEN
(...) do something (...)
END IF; 

mais je reçois un 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 'IF' at line 1

J'ai cherché des exemples dans les forums avec des requêtes simples, et je n'arrive pas à comprendre pourquoi cela ne fonctionne pas.

REMARQUE: Modifier pour corriger un lien cassé

  • Donc, quelle est votre requête ressemble?
  • Que voulez-vous dire par "drop des clés étrangères"?
  • gview quelque chose comme ALTER TABLE table DROP FOREIGN KEY fk ;