如何在mysql程序中创建临时表并生成不同的名称?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在mysql程序中创建临时表并生成不同的名称?相关的知识,希望对你有一定的参考价值。

我想创建具有不同表名的临时表。

存储过程不接受输入参数,创建临时表并将表的表名返回为T_1,T_2,T_3 ....

我怎样才能在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程序中创建临时表并生成不同的名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mariadb 或 mysql 中创建临时表?

mysql数据库怎么把查询出来的数据生成临时表

遍历表并在 js/jquery 中创建一个数组

MySQL中创建用户创建数据库表并付给用户权限

避免在 Hibernate 5.1.0 中创建全局临时表

如何在 Powerdesigner 中创建可以为不同数据库生成创建脚本的模型?