我可以使用 MySQL 函数或过程返回可在查询中使用的表名吗?
就像是
SELECT * FROM get_db_table_name(2342352412);
whereget_db_table_name()
是一个用户定义的函数,它接受 auser_id
作为参数并返回该用户所在的 db.table。我无法这样做,因为 MySQL 抱怨语法(我的猜测是因为我必须为函数定义一个返回类型,我尝试过VARCHAR(30)
它是错误的或不可能的)。那么,这可能吗?
故事是我有一些数据库,它们本质上是分片。让我们称它们user_1
为 ,user_2
等。
我也有一个表,比如包含emails
来自user_id
表 s等的记录。user_1.users
user_2.users
因为我知道一种通过查看 id 来计算 id 来自哪个表的方法,所以我只想要一个可以接受输入并返回要使用的 db.table 名称的函数。
谢谢!
PS 我想使用上面的 SELECT 查询作为 VIEW 定义,通过在正确的表上执行 JOIN 将用户名从正确的 db/table 中获取。