Используйте внешние ключи не только для ограничения - PullRequest
0 голосов
/ 04 января 2019

Я хочу создать динамический запрос, который будет знать, к какой таблице я присоединяюсь, на основе внешнего ключа. Есть ли способ использовать внешний ключ для этого? Я хотел бы создать оператор, который может искать, куда указывает внешний ключ, и использовать его для выбора правильных значений. Что-то, что будет работать так:

"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'";

1 Ответ

0 голосов
/ 04 января 2019

Информация о внешнем ключе может быть запрошена из таблицы information_schema.key_column_usage . Помните, что:

  • Внешний ключ может иметь несколько столбцов.
  • В таблице может быть несколько внешних ключей, указывающих на одну и ту же таблицу.

Это довольно сложно сделать с помощью простого SQL. Вам нужно написать хранимую подпрограмму и сгенерировать динамический SQL . Это также может снизить производительность. Если у вас есть (кажется) PHP в вашем распоряжении, динамическая генерация SQL, вероятно, станет проще, и вы также сможете реализовать некоторый механизм кэширования, чтобы information_schema не запрашивался каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...