开发学院

您的位置:首页>教程>正文

教程正文

MariaDB 临时表

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子句克隆现有表,这意味着该表包含它们的所有一般特性。用于生成临时表的CREATE TABLE语句不会提交作为TEMPORARY关键字的事务。

  虽然临时表与非临时表不一样,并在会话结束时丢弃,但它们可能存在某些冲突。

  它们有时会与过期会话中的ghost临时表冲突。

  它们有时与非临时表的影子名称冲突。

  注意:临时表允许与现有的非临时表同名,因为MariaDB将其视为差异引用。

管理

  MariaDB要求授予用户创建临时表的权限。使用GRANT语句将此权限授予非管理员用户。

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

删除临时表

  虽然临时表基本上是在会话结束时删除的,但是您可以手动删除它们。删除临时表需要使用TEMPORARY关键字,最佳实践建议在删除任何非临时表之前删除临时表。(此处的意思应该是临时表跟非临时表同名的时候,执行drop table xxx,会优先删除临时表。)

mysql> DROP TABLE order;