1.创建事务级临时表:
CREATE GLOBAL TEMPORARY TABLE temp_table ( id NUMBER, name VARCHAR2(50) ) ON COMMIT DELETE ROWS;
在这个示例中,创建了一个名为"temp_table"的事务级临时表,使用了`ON COMMIT DELETE ROWS`,表示在事务提交后,临时表中的数据将被自动删除
2.创建会话级临时表:
CREATE GLOBAL TEMPORARY TABLE session_table ( id NUMBER, name VARCHAR2(50)) ON COMMIT PRESERVE ROWS;
这里创建了一个名为"session_table"的会话级临时表,使用了`ON COMMIT PRESERVE ROWS`,表示在事务提交后,临时表中的数据会被保留,但在当前会话结束时会被删除。
3.测试临时表数据消失,打开一个新的会话1
3.1插入数据到临时表
INSERT INTO temp_table VALUES (1, 'John');
3.2 查询数据
SELECT * FROM temp_table;
3.3.在另一个会话2中查询临时表中的数据。
SELECT * FROM temp_table;
结果为空
3.4.提交会话1的事务并查询临时表中的数据。
COMMIT;
SELECT * FROM temp_table;
查询结果应该为空,因为在事务提交后,临时表中的数据会被自动删除
3.5.关闭会话1并查询临时表中的数据。
SELECT * FROM temp_table;
查询结果应该为空,因为在会话结束时,会话级临时表中的数据会被清空。