文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  table_exists() 过程

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