Spec-Zone.ru › MySQL 5.7

26.4.4.26 Процедура table_exists()

Проверяет, существует ли указанная таблица как обычная таблица, таблица типа TEMPORARY или представление. Процедура возвращает тип таблицы в параметре OUT. Если существуют как временная, так и постоянная таблица с данным именем, возвращается значение TEMPORARY.

Параметры
  • in_db VARCHAR(64): Имя базы данных, в которой нужно проверить существование таблицы.

  • in_table VARCHAR(64): Имя таблицы, существование которой нужно проверить.

  • out_exists ENUM('', 'BASE TABLE', 'VIEW', 'TEMPORARY'): Значение возврата. Это параметр OUT, поэтому это должна быть переменная, в которую можно сохранить тип таблицы. После выполнения процедуры переменная содержит одно из следующих значений, указывающих, существует ли таблица:

    • '': Таблицы с указанным именем нет в качестве базовой таблицы, таблицы типа TEMPORARY или представления.

    • BASE TABLE: Таблица с указанным именем существует как базовая (постоянная) таблица.

    • VIEW: Таблица с указанным именем существует как представление.

    • TEMPORARY: Таблица с указанным именем существует как таблица типа TEMPORARY.

Пример
mysql> CREATE DATABASE db1;
Query OK, 1 row affected (0.01 sec)

mysql> USE db1;
Database changed

mysql> CREATE TABLE t1 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.03 sec)

mysql> CREATE TABLE t2 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.20 sec)

mysql> CREATE view v_t1 AS SELECT * FROM t1;
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.00 sec)

mysql> CALL sys.table_exists('db1', 't1', @exists); SELECT @exists;
Query OK, 0 rows affected (0.01 sec)

+-----------+
| @exists   |
+-----------+
| TEMPORARY |
+-----------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 't2', @exists); SELECT @exists;
Query OK, 0 rows affected (0.02 sec)

+------------+
| @exists    |
+------------+
| BASE TABLE |
+------------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 'v_t1', @exists); SELECT @exists;
Query OK, 0 rows affected (0.02 sec)

+---------+
| @exists |
+---------+
| VIEW    |
+---------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 't3', @exists); SELECT @exists;
Query OK, 0 rows affected (0.00 sec)

+---------+
| @exists |
+---------+
|         |
+---------+
1 row in set (0.00 sec)

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/sys-table-exists.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API