2013-03-06 117 views
1

我在mysql中有一个与DB做某事的过程,但是它需要抛出异常以防它存在。我怎么做?如何检查数据库是否存在于mysql程序中

我需要这样的东西

if exist <db name> then 
    SIGNAL SQLSTATE '45002' 
    SET MESSAGE_TEXT = 'This database already exist'; 
end if; 
+0

已经在这里问过这里:http://stackoverflow.com/questions/838978/how-to-check-if-mysql-database-exists?rq=1 – 2013-03-06 10:54:21

+0

问题不在于程序中的实现,如果在程序中声明 – Petr 2013-03-06 12:58:09

回答

1

您可以使用此SQL:

SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'DBName' 

在程序那么这将是这样的:

DECLARE name TEXT; 
SELECT SCHEMA_NAME INTO name FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'DBName' 
IF name = 'DBName' THEN 
    SIGNAL SQLSTATE '45002' 
    SET MESSAGE_TEXT = 'This database already exist'; 
END IF; 

(声明:我之前没有写过MySQL程序,我没有测试过这个,只是提到了pos的方式实施。此外,这个例子是不完整的。)

+1

http://dev.mysql.com/doc/refman/5.5/en/schemata-table.html – Mchl 2013-03-06 10:53:00

+0

如何在过程中将它实现为if语句? – Petr 2013-03-06 12:56:55

+0

我更新了我的答案。我希望语法是正确的。如果有人发现错误,请更新答案。 – 2013-03-06 13:18:41

相关问题