用 show tables like 'xx' 可以知道表有没存在。不过要怎么用呢?我想在存储过程中判断xx表是否存在,如果不存在就创建之,要怎么写?如果在mysql命令行下判断的话,又要怎么写呢? 谢谢

解决方案 »

  1.   

    还有个问题:
    有个表名存在变量中: 
    declare tablename varchar(50);
    set tablename='aa';--本来用下面这句是可以删除aa表的,
    drop table if exists aa; 
    但现在用tablename变量,要怎么写呢? 谢谢
      

  2.   

    我测试了下,我也晕了delimiter $$
    create procedure table_create(IN tablename varchar(100))
    begin
    create table if not exists tablename
    (num int );
    end$$ 
    delimiter ;
    ]这段代码就是不能用,居然建立了一个表名叫tablename的表,向楼主借一个地盘求助下
      

  3.   

    判断表是否存在:
    存储过程中:
    set @sign=0;
    select 1 into @sign from information_schema 
    where table_name='aa' and table_schema='表aa所在数据库名称';
    if @sign=0 then
      create table aa .....
    end if;命令行:
    create table if not exists aa(
    表定义
    );
      

  4.   


    直接 create table  IF NOT EXISTS xxxx  (id int , ....
      

  5.   


    使用动态语句。set @sql = concat ("drop table ", tablename);
    PREPARE stmt1 FROM @sql;
    EXECUTE stmt1;
    DEALLOCATE PREPARE stmt1;
      

  6.   

    在5楼的帮助下写的一个存储过程,谢谢ACMAIN_CHM,学习了
    在create table 存储过程的形式参数是无效的,使用预处理后就能够执行了delimiter $$
    create procedure table_create(IN tablename varchar(100))
    begin
    set @sql=concat("create table if not exists ",tablename,"(num int )");
    prepare darwin FROM @sql;
    execute darwin;
    drop prepare darwin;
    end$$ 
    delimiter ;