是否可以根据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;
答案 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)
您也可以使用 创建表如果不存在(.... ...)