可以将 phpMyAdmin "internal relations" 配置为在一列上进行查找并从另一列插入值吗?

Can phpMyAdmin "internal relations" be configured to do lookup on one column and insert values from another?

我有一个 MySQL 数据库,其中有两个 InnoDB table,我使用 phpMyAdmin v4.5.2 进行管理。 table 在 "id" 列上有一个外键约束。

当我定义一个 "internal relation" 然后转到 table 的 "insert" 页面时,我现在看到我的列旁边有一个新图标,其中定义了内部关系。这很好,但是当我单击该图标时,我只能查找 ID 值...

如果我可以通过 "name" 列(即 SYMBOL varchar 字段)对内部关系进行查找,那将是非常好的,但是在选择一个项目时,它会从中填充 ID行(SYMBOL_LIST_ID 列)插入插入字段。我一直在搜索,但未能找到如何执行此操作的示例——是否有人设置了此类内部关系功能?谢谢!

这是我的 table 结构的示例: http://sqlfiddle.com/#!9/4e921/1

我无法查看您的 SQL Fiddle,但听起来您只想在 table 而不是密钥 ID 中显示查找值。

顺便说一下,由于您使用的是 InnoDB table 类型,我建议使用实际的 MySQL 关系而不是 phpMyAdmin 的内部关系。这将允许您的其他应用程序利用您配置的关系。

有两种配置关系的方法,关系视图(在 table 的“结构”选项卡下可用)或设计器(在查看数据库时位于选项卡的主列表中)。听起来您已经在使用关系视图并在那里正确定义了外键,因此在您进行查找的 table 上转到关系视图并向下滚动到 "Choose column to display",然后选择您要查找的列。

就我而言,我构建了一个 table "customer":

id int primary key
name varchar(255)
city_ref int index

和"customer_city":

id int primary key
city varchar(255)

然后我在 "customer" 中的关系视图中配置了我的外键:

最后从 "customer_city" 的关系视图中,选择 "city" 作为要显示的列:

现在,当我向 "customer" 插入一行时,我得到 "city" 字段中显示的查找值:

注意它出现了两次,一次按ID排序,一次按城市排序;这样,如果我知道 ID,我可以快速插入;如果我不知道,则可以通过参考值快速插入。