Puis-je utiliser une fonction ou une procédure MySQL pour renvoyer les noms de tables pouvant être utilisés dans une requête?MySQL Fonction de renvoi du nom de la table à utiliser dans une requête
Quelque chose comme
SELECT * FROM get_db_table_name(2342352412);
où get_db_table_name()
est une fonction définie par l'utilisateur qui accepte une user_id
en tant que paramètre et renvoie le db.table où l'utilisateur se trouve. Je n'ai pas pu le faire de cette façon car MySQL se plaint de la syntaxe (je suppose que c'est parce que j'ai dû définir un type de retour pour la fonction, que j'ai essayé comme VARCHAR(30)
et c'est faux ou impossible). Alors, est-ce possible?
L'histoire est que j'ai quelques bases de données qui sont essentiellement des fragments. Appelons-les user_1
, user_2
, etc.
J'ai aussi une seule table, dire emails
qui contient des enregistrements avec user_id
s des tables user_1.users
, user_2.users
, etc.
Depuis que je connais un moyen de calculer laquelle une table id est juste en regardant l'id, je veux juste une fonction qui accepte une entrée et retourne un nom db.table à utiliser.
Merci!
P.S. Je voudrais utiliser la requête SELECT ci-dessus comme une définition VIEW qui amènerait le nom de l'utilisateur à partir de la table/base de données appropriée en effectuant une jointure à travers la table appropriée.
Je ne pense pas que cela fonctionnerait dans une déclaration VIEW (voir le P.S. dans le message principal). Pouvez-vous fournir une définition VIEW où cela fonctionnerait? –
Je dirais que concaténer CREATE VIEW à @sql n'est pas un problème non plus. – Zed