TEMPORARY
创建表时
可以使用关键字。TEMPORARY
表仅在当前会话中可见,并在会话关闭时自动删除。这意味着两个不同的会话可以使用相同的临时表名称而不会相互冲突或与TEMPORARY
同名的现有非表发生冲突。(在临时表被删除之前,现有表是隐藏的。)
CREATE TABLE
导致隐式提交,除非与TEMPORARY
关键字一起使用。请参阅第 13.3.3 节,“导致隐式提交的语句”。
TEMPORARY
表与数据库(模式)的关系非常松散。删除数据库不会自动删除TEMPORARY
在该数据库中创建的任何表。TEMPORARY
此外,如果在语句中使用数据库名称限定表名称,则可以在不存在的数据库
中创建
表CREATE TABLE
。在这种情况下,对该表的所有后续引用都必须使用数据库名称进行限定。
要创建临时表,您必须具有
CREATE TEMPORARY TABLES
权限。会话创建临时表后,服务器不会对该表执行进一步的权限检查。创建会话可以对表执行任何操作,例如
DROP TABLE
、
INSERT
、
UPDATE
或
SELECT
。
此行为的一个含义是会话可以操作其临时表,即使当前用户没有创建临时表的权限也是如此。假设当前用户没有CREATE TEMPORARY TABLES
权限,但能够执行一个定义上下文存储过程,该存储过程以拥有权限的用户的权限执行,CREATE TEMPORARY TABLES
并创建了一个临时表。在过程执行时,会话使用定义用户的权限。过程返回后,有效权限恢复为当前用户的权限,该用户仍然可以查看临时表并对其执行任何操作。