1

我在 mysql 中有一个程序正在对 DB 做一些事情,但是如果它存在,它需要抛出异常。我怎么做?

我需要类似的东西

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

1 回答 1

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 程序,也没有测试过这个程序。只是为了给出一种可能的实现方式而提及。另外,这个例子并不完整。)

于 2013-03-06T10:52:24.677 回答