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;
广告
© . All rights reserved.