una temporales tablas tabla procedimiento partir las indice eliminar donde dinamica crear consultar consulta almacenan almacenado sql postgresql temp-tables

procedimiento - Creando tablas temporales en SQL



donde se almacenan las tablas temporales sql server (2)

Estoy tratando de crear una tabla temporal que selecciona solo los datos para cierto tipo de register_type . Escribí esta consulta pero no funciona:

$ CREATE TABLE temp1 (Select egauge.dataid, egauge.register_type, egauge.timestamp_localtime, egauge.read_value_avg from rawdata.egauge where register_type like ''%gen%'' order by dataid, timestamp_localtime ) $

Estoy usando PostgreSQL.
¿Podría decirme qué está mal con la consulta?


Probablemente desee CREATE TABLE AS - también funciona para tablas TEMPORARY ( TEMP ):

CREATE TEMP TABLE temp1 AS SELECT dataid , register_type , timestamp_localtime , read_value_avg FROM rawdata.egauge WHERE register_type LIKE ''%gen%'' ORDER BY dataid, timestamp_localtime

Esto crea una tabla temporal y copia datos en ella. Una instantánea estática de los datos, téngalo en cuenta. Es como una tabla normal, pero reside en la RAM si temp_buffers está configurado lo suficientemente alto, solo es visible dentro de la sesión actual y muere al final de la misma. Cuando se crea con ON COMMIT DROP , muere al final de la transacción .

Las tablas de temperatura son lo primero en la ruta de búsqueda de esquema predeterminada, ocultando otras tablas visibles del mismo nombre a menos que esté calificado por esquema:

Si quieres dinámica , estarías buscando CREATE VIEW - una historia completamente diferente.

El estándar SQL también define, y Postgres también admite: SELECT INTO .
Pero su uso no se recomienda :

Lo mejor es usar CREATE TABLE AS para este propósito en un código nuevo.

Realmente no hay necesidad de una segunda variante de sintaxis, y SELECT INTO se utiliza para la asignación en plpgsql , donde la sintaxis SQL no es consecuentemente posible.

Relacionado:

CREATE TABLE LIKE (...) solo copia la estructura de otra tabla y no contiene datos:

La cláusula LIKE especifica una tabla desde la cual la nueva tabla copia automáticamente todos los nombres de columna, sus tipos de datos y sus restricciones no nulas.

Si necesita una tabla "temporal" solo para una sola consulta (y luego descartarla), una "tabla derivada" en una CTE o subconsulta tiene una sobrecarga considerablemente menor: