在Oracle中, Temp Table的结构建好后, 每个会话都可以看到这个表空构, 但看不到数据. 按数据还可以分为是事务范围(On Commit Delete Rows)的还是会话范围(On Commit Preserve Rows)的. 表结构一致有好处有坏处, 好处是每个会话不需要运行建表语句(其他数据库则不然), 坏处是当这个Temp Table被其他会话使用时, 对它做些DDL时会报错.

    在MySQL 5中也有专门的Temp表, 每个会话可以创建结构不同的同名临时表, 当会话结束时, 这个临时表会被自动删除. 并且, 临时表可以和普通的表同名, 并且有优先权, 这点和Oracle不一样了, 显得Name Space没有管理好. 数据没有事务级别和会话级别之分(可能没有看清楚文档).

    所接触的Sybase和SQL Server还是很久以前的老版本了, 不知道现在如何了. 只能使用”Insert … Into …“语句来建, 而不是Create Table语句. 建一个只在这个会话看得见的Temp的表的话, 表名要用一个”#“开头, 要建一个后来的会话看得见的Temp Table的话, 则表名用两个”#“开头. 同样的当会话结束后, 表也自动被删除了.

    对于DB2是一无所知, 有人会告诉我吗? 还有一些其他的数据库呢?