036、TiDB特性_临时表

全局临时表

CREATE GLOBAL TEMPORARY TABLE;
  • 全局临时表的表定义是持久的,并且对所有会话都可⻅
  • 全局临时表的数据仅在当前事务中可⻅
  • 当事务结束时,数据会⾃动清除
  • 全局临时表不能与永久表同名
  • 出现在 information_schema.tables

# commit delete rows 一定带上这个才能创建
tidb> create global temporary table test.temp2 (id bigint) on
commit delete rows;
Query OK, 0 rows affected (0.57 sec)

# 开启事务,关闭自动提交
tidb> set @@autocommit = 'OFF';
tidb> insert into test.temp2 values (10);
tidb> select * from test.temp2;
+------+
| id |
+------+
| 10 |
+------+
1 row in set (0.00 sec)
tidb> commit;

# 事务完成后,这张表虽然存在,但里面的数据清掉
tidb> select * from test.temp2;
Empty set (0.00 sec)

用户可通过 CREATE GLOBAL TEMPORARY TABLE 语句创建全局临时表,语句末尾要加上 ON COMMIT DELETE ROWS。可通过 DROP TABLE 或 DROP GLOBAL TEMPORARY TABLE 语句删除全局临时表。

本地临时表

  • CREATE TEMPORARY TABLE:

    • 仅在客户端会话期间存在
    • 仅对创建它的会话可见
    • 覆盖永久表的定义
    • 不会出现在 information_schema.tables
  • 本地临时表的语义与 MySQL 临时表一致,它有以下特性:

    • 本地临时表的表定义不持久化,只在创建该表的会话内可见,其他会话无法访问该本地临时表
    • 不同会话可以创建同名的本地临时表,各会话只会读写该会话内创建的本地临时表
    • 本地临时表的数据对会话内的所有事务可见
    • 在会话结束后,该会话创建的本地临时表会被自动删除
    • 本地临时表可以与普通表同名,此时在 DDL 和 DML 语句中,普通表被隐藏,直到本地临时表被删除

• 用户可通过 CREATE TEMPORARY TABLE 语句创建本地临时表,通过 DROP TABLE 或 DROP TEMPORARY TABLE 语句删除本地临时表。

tidb> create table test.temp1 (id int);
Query OK, 0 rows affected (0.51 sec)

tidb> create temporary table test.temp1 (name char(10));
Query OK, 0 rows affected (0.00 sec)

tidb> desc test.temp1;
+-------+----------+------+------+---------+-------+
| Field | Type     | Null | Key  | Default | Extra |
+-------+----------+------+------+---------+-------+
| name  | char(10) | YES  |      | NULL    |       |
+-------+----------+------+------+---------+-------+
1 row in set (0.00 sec)

tidb> drop table test.temp1;
Query OK, 0 rows affected (0.00 sec)

tidb> desc test.temp1;
+-------+---------+------+------+---------+-------+
| Field | Type    | Null | Key  | Default | Extra |
+-------+---------+------+------+---------+-------+
| id    | int(11) | YES  |      | NULL    |       |
+-------+---------+------+------+---------+-------+
1 row in set (0.00 sec)

你可能感兴趣的:(TiDB从入门到精通,tidb,分布式数据库,数据库,sql)