如何在mysql中多次使用临时表

时间:2017-05-05 08:31:19

标签: mysql

我在程序中创建了临时表,如下所示。

create temporary table tmp_table
(
id int,
idate date,
iname varchar(100)
)

insert into tmp_table
select dept_no, dept_create_date,dept_name from dept_record_2016
union all 
select dept_no, dept_create_date,dept_name from dept_record_2017;


select * from tmp_table;

insert into tmp_table
select emp_no , date_of_join , emp_full_name from emp_info;

我得到以下错误ERROR 1137:无法重新打开表:'tmp_table'。

那么如何使用单个临时表多次在程序中使用相同的临时表?

有替代解决方案吗?

1 个答案:

答案 0 :(得分:0)

编辑:

当我尝试使用此过程重现您的问题时,我无法重现它。对我来说非常好。

delimiter $$
create procedure whatever()
begin
create temporary table tmp_table (a int, b int);

insert into tmp_table
select * from a
union all
select * from b;

select * from tmp_table;

insert into tmp_table
select * from c;
end $$
delimiter ;

call whatever();

更详细地描述您的问题!并尝试隔离何时出现错误消息。

原始回答:

我想你的问题是:

  

TEMPORARY表仅对当前会话可见,而且是   会话关闭时自动删除。这意味着两个   不同的会话可以使用相同的临时表名称   相互冲突或与现有的非TEMPORARY表冲突   同名。 (现有表隐藏到临时表之前   被丢弃了。)

Source (official manual)