Although the syntax of CREATE TEMPORARY TABLE
resembles that of SQL92, the effect is not the same. In the standard,
- temporary tables are associated with modules; a temporary table is created
- just once and automatically exists (starting with empty contents) in every
- session that uses the module.
-
PostgreSQL does not have modules, and
+ temporary tables are defined just once and automatically exist (starting
+ with empty contents) in every session that needs them.
requires each session to issue its own CREATE TEMPORARY
- TABLE command for each temporary table to be used.
- The notion of GLOBAL temporary tables found in SQL92
- is not in
PostgreSQL at all.
+ TABLE command for each temporary table to be used. This allows
+ different sessions to use the same temporary table name for different
+ purposes, whereas the spec's approach constrains all instances of a
+ given temporary table name to have the same table structure.
+ SQL92's distinction between global and local temporary tables
+ is not in
PostgreSQL, since that distinction
+ depends on the concept of modules, which
+
PostgreSQL does not have.
+
+
The ON COMMIT clause for temporary tables
also resembles SQL92, but has some differences.
default behavior is ON COMMIT DELETE ROWS>. However, the
default behavior in
PostgreSQL is
ON COMMIT PRESERVE ROWS. The ON COMMIT
- DROP option does not exist in SQL92 at all.
+ DROP option does not exist in SQL92.