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 KEYfk
;
Vous devez vous connecter pour publier un commentaire.
Vous devez vous connecter au système d'Information et vous pouvez trouver toutes les informations sur les clés primaires et les clés étrangères dans ce tableau
SELECT * FROM information_schema.TABLE_CONSTRAINTS T;
vous devez être un
ROOT
utilisateur d'accéder à lainformation_schema
.À l'AIDE de ce tableau, vous pouvez trouver la table, db et si elle a une clé étrangère.
Espère que cela aide si vous ne voulez pas utiliser
IF EXIST
et de la Procédure Stockée. Mais je suis Sûr que vous pouvez utiliserIF EXIST
peut être utilisé à des fins non stockées procédure des requêtes....GRANT ALL
ensuite, ils peuvent voir les autorisations sur la table.Pourquoi Vous n'utilisez pas la table "INFORMATION_SCHEMA" à cela?
Vous devez vous connecter au système d'Information et vous pouvez trouver toutes les informations sur les clés primaires et les clés étrangères dans ce tableau