Можно ли использовать функцию или процедуру MySQL для возврата имен таблиц, которые можно использовать в запросе?
Что-то вроде
SELECT * FROM get_db_table_name(2342352412);
где get_db_table_name()
- это определенная пользователем функция, которая принимает user_id
в качестве параметра и возвращает таблицу db.table, где находится этот пользователь. Я не смог сделать это таким образом, потому что MySQL жалуется на синтаксис (я думаю, это потому, что мне пришлось определить тип возвращаемого значения для функции, который я попытался использовать как VARCHAR(30)
, и это неправильно или невозможно). Так возможно ли это?
История в том, что у меня есть несколько баз данных, которые по сути являются осколками. Назовем их user_1
, user_2
и т. Д.
У меня также есть одна таблица, скажем emails
, которая содержит записи с user_id
s из таблиц user_1.users
, user_2.users
и т. Д.
Поскольку я знаю способ вычисления таблицы, из которой происходит идентификатор, просто взглянув на идентификатор, я просто хочу, чтобы функция принимала входные данные и возвращала имя db.table для использования.
Спасибо!
P.S. Я хотел бы использовать вышеупомянутый запрос SELECT в качестве определения VIEW, которое принесло бы имя пользователя из соответствующей базы данных / таблицы, выполнив JOIN через соответствующую таблицу.