文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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)