В MySQL есть переменная для текущей базы данных?

11

У меня есть script, который я запускаю в нескольких базах данных и запускаюсь в нескольких базах данных. Я просто изменяю выражение MySql "USE".

Я хочу иметь инструкцию select, которая выводит текущую базу данных, которую выполняет script, как поле.

Например:


USE my_db;

SELECT 
  CURRENT_DB, -- this is where to insert the current executing db, i.e. "my_db"
  id, name, blah, blah
FROM my_table

  • 1
    Что такого сложного в руководстве, прежде чем писать?
  • 0
    Я искал дольше, чем ожидал. Google & Bing были разборчивы и не находили это. Возможно, потому что я искал переменную, а не функцию БД.
Показать ещё 3 комментария
Теги:
variables

3 ответа

23
Лучший ответ

Используйте функцию database(): http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_database

  • 0
    Что интересно, это то, что он не работает в SQLyog. Я предполагаю, что он просто добавляет имя базы данных к каждому имени таблицы в запросе перед его выполнением.
  • 1
    @Shedal - я бы сказал, что это ошибка в SQLyog, так как это документированная функция прямо из документации MySQL.
9

используйте БАЗЫ ДАННЫХ()

Возвращает стандартное (текущее) имя базы данных в виде строки в наборе символов utf8. Если база данных по умолчанию отсутствует, DATABASE() возвращает NULL. В рамках хранимой процедуры база данных по умолчанию - это база данных, с которой связана подпрограмма, которая не обязательно совпадает с базой данных, которая по умолчанию используется в вызывающем контексте.

для примера

  mysql> SELECT DATABASE();
6

Попробуйте этот фрагмент:

select database();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню