由于速度或一次性數(shù)據(jù),一些操作可能受益于臨時表。 臨時表的生命期在會話終止時結(jié)束,無論是從命令提示符,PHP腳本還是通過客戶端程序使用它們。 它也不以典型的方式出現(xiàn)在系統(tǒng)中。 SHOW TABLES命令不會顯示包含臨時表的列表。
CREATE TABLE語句中的TEMPORARY關(guān)鍵字生成臨時表。 查看下面給出的示例 -
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 );
在創(chuàng)建臨時表時,可以使用LIKE子句克隆現(xiàn)有表,這意味著其所有常規(guī)特征。 用于生成臨時表的CREATE TABLE語句不會作為TEMPORARY關(guān)鍵字的結(jié)果提交事務(wù)。
雖然臨時表在會話結(jié)束時與非臨時表脫離,但它們可能有一定的沖突 -
他們有時會與過期會話中的ghost臨時表沖突。
它們有時與非臨時表的影子名稱沖突。
注意 - 臨時表允許與現(xiàn)有非臨時表具有相同的名稱,因為MariaDB將其視為差異引用。
MariaDB需要向用戶授予創(chuàng)建臨時表的權(quán)限。 使用GRANT語句將此權(quán)限授予非管理員用戶。
GRANT CREATE TEMPORARY TABLES ON orders TO 'machine122'@'localhost';
雖然臨時表基本上在會話結(jié)束時刪除,您可以選擇刪除它們。 刪除臨時表需要使用TEMPORARY關(guān)鍵字,最佳實踐建議在臨時表之前刪除臨時表。
mysql> DROP TABLE order;
更多建議: