MySQL创建数据库(如果不存在)
我有一个T-SQL查询,如果数据库还不存在,它会创建数据库:MySQL创建数据库(如果不存在),mysql,Mysql,我有一个T-SQL查询,如果数据库还不存在,它会创建数据库: IF (NOT EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE ('[' + 'DBName' + ']' = 'DBName' OR name = 'DBName'))) BEGIN CREATE DATABASE DBName PRINT 'DA
IF (NOT EXISTS (SELECT name
FROM master.dbo.sysdatabases
WHERE ('[' + 'DBName' + ']' = 'DBName'
OR name = 'DBName')))
BEGIN
CREATE DATABASE DBName
PRINT 'DATABASE_CREATED'
END
ELSE
PRINT 'DATABASE_EXIST'
当我想在MySQL中使用它时,我得到一个错误:
“如果”在此位置不是有效输入
我将此脚本更改为
IF(SELECT COUNT(*) FROM SCHEMA_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'DBName') > 0)
THEN BEGIN
CREATE DATABASE DBName
PRINT 'DATABASE_CREATED'
ELSE
PRINT 'DATABASE_EXIST'`
但它仍然不起作用
如何在MySQL中创建此查询?我不确定您将如何检查,但如果您只是想在不存在的情况下创建它,那么您可以这样做
CREATE DATABASE IF NOT EXISTS DBname
以下是助手(永久)数据库中的示例。该数据库的名称是永久的 一次性数据库创建:
create schema permanent;
现在确保你
USE permanent;
然后
存储过程:
DROP PROCEDURE IF EXISTS createDB;
DELIMITER $$
CREATE PROCEDURE createDB(IN pDbName VARCHAR(100))
BEGIN
DECLARE preExisted INT;
DECLARE ret VARCHAR(50);
SET ret='DATABASE_EXIST';
SELECT COUNT(*) INTO preExisted
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME=pDbName;
IF preExisted=0 THEN
SET @sql=CONCAT('CREATE SCHEMA ',pDbName); -- add on any other parts of string like charset etc
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
-- right here you could assume it worked or take additional
-- step to confirm it
SET ret='DATABASE_CREATED';
END IF;
SELECT ret as 'col1';
END$$
DELIMITER ;
测试:
为什么不使用简单的语句,比如“如果数据库不存在,创建数据库DBName;”?看看这个例子-你也可以看到这样的帖子-问题被重新标记到microsoft
sql server
@Drew他们在问如何在MySQL中实现它。@MartinSmith,但看看它的其余部分,master.dbo.sysdatabases
。。。除了Mster softie Tables,我不知道他们在引用什么。我知道如果不存在,我可以使用,
,但我需要返回字符串“DATABASE\u CREATED”(数据库创建)
或“DATABASE\u EXIST”(数据库存在)
,然后从中生成一个存储过程并传递一个parameter@Szymson如果您知道自己的服务器类型,也会有所帮助。我看起来甚至不是mysql,所以我把你的问题重新标记到了microsoftstored proc,可以添加到数据库中,但我需要先创建数据库。调用helper db中的存储过程。谢谢,这正是我所需要的:)
use permanent;
call createDB('xyz');
-- returns col1 DATABASE_CREATED
call createDB('xyz');
-- returns col1 DATABASE_EXIST