Documentation Home
MySQL 8.0 参考手册  / 第 13 章 SQL 语句  / 13.1 数据定义语句  / 13.1.20 CREATE TABLE 语句  /  13.1.17.2 CREATE TEMPORARY TABLE 语句

13.1.17.2 CREATE TEMPORARY TABLE 语句

TEMPORARY创建表时 可以使用关键字。TEMPORARY表仅在当前会话中可见,并在会话关闭时自动删除。这意味着两个不同的会话可以使用相同的临时表名称而不会相互冲突或与TEMPORARY同名的现有非表发生冲突。(在临时表被删除之前,现有表是隐藏的。)

CREATE TABLE导致隐式提交,除非与TEMPORARY 关键字一起使用。请参阅第 13.3.3 节,“导致隐式提交的语句”

TEMPORARY表与数据库(模式)的关系非常松散。删除数据库不会自动删除TEMPORARY在该数据库中创建的任何表。TEMPORARY此外,如果在语句中使用数据库名称限定表名称,则可以在不存在的数据库 中创建 表CREATE TABLE。在这种情况下,对该表的所有后续引用都必须使用数据库名称进行限定。

要创建临时表,您必须具有 CREATE TEMPORARY TABLES 权限。会话创建临时表后,服务器不会对该表执行进一步的权限检查。创建会话可以对表执行任何操作,例如 DROP TABLEINSERTUPDATESELECT

此行为的一个含义是会话可以操作其临时表,即使当前用户没有创建临时表的权限也是如此。假设当前用户没有CREATE TEMPORARY TABLES 权限,但能够执行一个定义上下文存储过程,该存储过程以拥有权限的用户的权限执行,CREATE TEMPORARY TABLES并创建了一个临时表。在过程执行时,会话使用定义用户的权限。过程返回后,有效权限恢复为当前用户的权限,该用户仍然可以查看临时表并对其执行任何操作。