MariaDB - 臨時表



由於速度或資料的一次性使用,某些操作可以從臨時表中受益。臨時表的生命週期在會話終止時結束,無論您是從命令提示符、PHP 指令碼還是透過客戶端程式使用它們。它也不會以典型的方式出現在系統中。SHOW TABLES 命令不會顯示包含臨時表的列表。

建立臨時表

在 CREATE TABLE 語句中使用 TEMPORARY 關鍵字可以生成一個臨時表。請檢視下面的示例:

mysql>CREATE TEMPORARY TABLE order (
   item_name VARCHAR(50) NOT NULL
   , price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   , quantity INT UNSIGNED NOT NULL DEFAULT 0
);

在建立臨時表時,您可以使用 LIKE 子句克隆現有表,這意味著所有其一般特性都會被複制。由於 TEMPORARY 關鍵字的存在,用於生成臨時表的 CREATE TABLE 語句不會提交事務。

儘管臨時表與非臨時表不同,並在會話結束時刪除,但它們可能會發生某些衝突:

  • 它們有時會與已過期會話的幽靈臨時表衝突。

  • 它們有時會與非臨時表的影子名稱衝突。

注意 - 臨時表允許與現有的非臨時表具有相同的名稱,因為 MariaDB 將其視為不同的引用。

管理

MariaDB 需要為使用者授予建立臨時表的許可權。使用 GRANT 語句將此許可權授予非管理員使用者。

GRANT CREATE TEMPORARY TABLES ON orders TO 'machine122'@'localhost';

刪除臨時表

雖然臨時表實質上在會話結束時被刪除,但您可以選擇刪除它們。刪除臨時表需要使用 TEMPORARY 關鍵字,最佳實踐建議在任何非臨時表之前刪除臨時表。

mysql> DROP TABLE order;
廣告