Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用外键不仅仅是为了约束_Mysql_Foreign Keys - Fatal编程技术网

Mysql 使用外键不仅仅是为了约束

Mysql 使用外键不仅仅是为了约束,mysql,foreign-keys,Mysql,Foreign Keys,我想创建一个动态查询,它将根据外键知道我要加入哪个表。有没有一种方法可以使用外键呢?我想创建一个语句,可以查找外键点的位置,并使用它来选择正确的值。工作原理如下: "SELECT t.*, f.Name FROM $table t INNER JOIN {foreign table(will change based on the table selected and the foreign key it has)} f WHERE t.key = '$key'"; 可以从中查询外键信息。记住

我想创建一个动态查询,它将根据外键知道我要加入哪个表。有没有一种方法可以使用外键呢?我想创建一个语句,可以查找外键点的位置,并使用它来选择正确的值。工作原理如下:

"SELECT t.*, f.Name FROM $table t INNER JOIN {foreign table(will change based on the table selected and the foreign key it has)} f WHERE t.key = '$key'";

可以从中查询外键信息。记住:

  • 外键可以有多个列
  • 一个表可能有多个外键指向同一个表

在普通SQL中这样做有点棘手。您需要编写一个存储例程并生成。这也可能会降低性能。如果您有(看起来)PHP供您使用,那么动态SQL生成可能会变得更容易,而且您还能够实现一些缓存机制,这样就不会每次都查询
信息\u schema

您没有试过吗?@jeto是的,我不确定是否添加了标记,因为这是我用来使查询动态的。我应该把它拿走吗?@JayBlanchard你什么意思?@Jeto我不知道你会怎么做,所以我不能再举更多的例子了。这能更好地解释它吗?嗯,您可以查询字典以查看FK约束指向何处,然后使用此信息构建第二个查询。但问题是,你需要它做什么?您通常知道要查询的内容。这更像是一个学术问题,还是你能详细说明一下你到底想在这里做什么?