创build具有相同列和types的临时表作为永久表的最佳方法

我需要创build一个与永久表相同的列和types的临时表。 什么是最好的办法呢? (永久表有100多列)

通常我会这样创build表格。

DECLARE #TT TABLE( member_id INT, reason varchar(1), record_status varchar(1) , record_type varchar(1) ) 

但有没有办法做到这一点,而不提及列的名称和types,但提及所需列的另一个表的名称?

 select top 0 * into #mytemptable from myrealtable 

sorting一个…

 select top 0 * into #temptable from mytable 

注意:这会创build一个temp的空副本,但不会创build主键

这是一个MySQL特定的答案,不知道它在哪里工作 –

您可以创build一个具有相同列定义的空表:

 CREATE TEMPORARY TABLE temp_foo LIKE foo; 

你可以创build一个现有表的填充副本:

 CREATE TEMPORARY TABLE temp_foo SELECT * FROM foo; 

以下是postgres的作品。 不幸的是,不同的RDBMS在这里似乎并不一致:

 CREATE TEMPORARY TABLE temp_foo AS SELECT * FROM foo; 

我意识到这个问题是非常古老的,但是对于任何寻找特定于PostgreSQL的解决scheme的人来说,它是:

 CREATE TEMP TABLE tmp_table AS SELECT * FROM original_table LIMIT 0; 

请注意,临时表将被放入像pg_temp_3这样的模式中。

这将创build一个临时表,它将包含所有列(没有索引)和没有数据,但是根据您的需要,您可能需要删除主键:

 ALTER TABLE pg_temp_3.tmp_table DROP COLUMN primary_key; 

如果原始表格中没有任何数据,则可以忽略“LIMIT 0”。

 select * into #temptable from tablename where 1<>1