如何在mysql程序中创建临时表并生成不同的名称?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在mysql程序中创建临时表并生成不同的名称?相关的知识,希望对你有一定的参考价值。
答案
以下程序应该对您有帮助。但是这种序列生成仅适用于当前的连接会话。但是我希望你可以在临时表上预期它。
delimiter //
drop procedure if exists set_new_temp_table //
create procedure set_new_temp_table()
begin
if( @temp_table_seq_num is null ) then
set @temp_table_seq_num := 1;
end if;
set @temp_table_name := Concat( 'T_', @temp_table_seq_num );
set @sql := concat( 'create temporary table if not exists '
, @temp_table_name
, '( col1 int, col2 varchar(10) )'
);
prepare stmt from @sql;
execute stmt;
drop prepare stmt;
set @temp_table_seq_num := ( cast( @temp_table_seq_num as decimal ) + 1 );
set @sql := null;
end;
//
delimiter ;
select @temp_table_name; -- should return a NULL before first ever call to SP
call set_new_temp_table(); select @temp_table_name;
但@ z zxsw Poi
另一答案
这是完整的例子
MySQL 5.5.32 Fiddle
另一答案
您可以在创建表时使用TEMPORARY关键字。 TEMPORARY表仅对当前会话可见,并在会话关闭时自动删除。这意味着两个不同的会话可以使用相同的临时表名,而不会相互冲突或与现有的同名非TEMPORARY表冲突。 (在删除临时表之前,将隐藏现有表。)要创建临时表,您必须具有CREATE TEMPORARY TABLES特权。
以上是关于如何在mysql程序中创建临时表并生成不同的名称?的主要内容,如果未能解决你的问题,请参考以下文章