Проверка существования таблицы

Задача
Вы хотите знать, существует ли таблица.

Решение
Используйте предложение SHOW TABLES, чтобы посмотреть, присутствует ли таблица в списке.

Обсуждение
Вы можете использовать предложение SHOW TABLES для проверки существования определенной таблицы, добавив инструкцию LIKE с именем таблицы:

SHOW TABLES LIKE 'имя_таблицы';
SHOW TABLES FROM имя_БД LIKE 'имя_таблицы';

Если строка возвращается, таблица существует. Если нет, то не существует.

Рассмотрим функцию на Perl, осуществляющую проверку наличия таблицы:

sub table_exists
{
my ($dbh, $tbl_name) = @_;
my $db_clause = "";
($db_clause, $tbl_name) = (" FROM $1", $2) if $tbl_name =~ /(.*)\.(.*)/;
$tbl_name =~ s/([%_])/\\$1/g; # экранировать любые специальные символы
return ($dbh->selectrow_array ("SHOW TABLES $db_clause LIKE '$tbl_name'"));
}

Функция проверяет аргумент имени таблицы на соответствие формату имя_БД.имя_таблицы. Если формат такой, то функция извлекает имя таблицы и добавляет в предложение инструкцию FROM. В противном случае производится проверка для текущей базы данных.


Обратите внимание на то, что функция возвращает «ложь», если таблица существует, но у вас нет прав на доступ к ней.

Есть и другие способы проверки существования таблицы. Любое из приведенных ниже предложений SELECT выполнится успешно, если таблица существует, и не выполнится, если она не существует:

SELECT * FROM имя_таблицы WHERE 1=0;
SELECT COUNT(*) FROM имя_таблицы;

Чтобы использовать такие предложения в программе, сначала настройте режим диагностирования ошибок вашего API так, чтобы он не прерывалвыполнение программы в случае обнаружения ошибки. Затем попробуйте выполнить предложение и посмотреть, выполнится ли оно.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела MySQL на эту тему:
Вывод списков таблиц и баз данных
Мониторинг сервера MySQL
Определение количества строк, обработанных запросом
Определение наличия или отсутствия результирующего множества
Определение текущего пользователя MySQL