MySQL有条件地创建一个表

时间:2013-10-28 23:27:29

标签: mysql sql

是否可以根据select语句的结果在MySql中执行条件创建表?基本上,如果我有一个多个客户使用的模式,但只有一些需要一个表,我可以根据另一个值创建它...例如...如果我有一个用户约翰然后创建这个表...因为约翰的应用程序需要它。

有些事情:

IF EXISTS (SELECT * FROM USERS WHERE name='JOHN')

CREATE TABLE CREATE_THIS
   (
        ID VARCHAR(255) COLLATE utf8_bin NOT NULL,
        NAME VARCHAR(255) COLLATE utf8_bin NOT NULL   
    )
    ENGINE=MyISAM DEFAULT CHARSET=utf8;

2 个答案:

答案 0 :(得分:2)

这种业务逻辑并不真正属于应用程序的数据库层。在用于连接数据库的任何代码中,它通常位于更高级别。

但是,为了完整性,有一种(非常hackish)方法可以通过从包含要执行的SQL的字符串准备语句来完成您的要求:

SET @sql := CASE WHEN EXISTS (SELECT * FROM USERS WHERE name='JOHN') THEN
 'CREATE TABLE CREATE_THIS (
    ID VARCHAR(255) COLLATE utf8_bin NOT NULL,
    NAME VARCHAR(255) COLLATE utf8_bin NOT NULL   
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8'
END;

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

答案 1 :(得分:0)

您也可以使用     创建表如果不存在(....     ...)