4

是否可以根据 select 语句的结果在 MySql 中进行条件创建表?本质上,如果我有多个客户端使用的架构,但只有其中一些需要一个表,我可以根据另一个值创建它......例如......如果我有一个用户 John,那么创建这个表......因为 John 的应用程序需要它。

类似于以下内容:

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;
4

2 回答 2

4

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

但是,为了完整起见,有一种(非常骇人听闻的)方法可以通过从包含要执行的 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;
于 2013-10-28T23:33:55.140 回答
2

你也可以使用

    CREATE Table IF NOT EXISTS <Table_Name> ( ....
    ...)
于 2016-07-28T16:53:22.753 回答