📅  最后修改于: 2020-11-27 05:35:56             🧑  作者: Mango
由于速度快或可丢弃的数据,某些操作可以从临时表中受益。无论您是通过命令提示符,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;