1

DBで何かをしているmysqlのプロシージャがありますが、存在する場合は例外をスローする必要があります。それ、どうやったら出来るの?

次のようなものが必要です

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 に答える