MySQL 8.0 リファレンスマニュアル


28.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)

関連キーワード:  プロシージャ, summary, 関数, テーブル, latency, exists, user, schema, sys, setup