2014-07-11 3 views
0

MySQL 데이터베이스를 사용하여 phpMyAdmin으로 SQL 스크립트를 가져옵니다. 데이터베이스가 스크립트 상단에 있는지 확인하고 그렇지 않으면 반환해야합니다. 데이터베이스 또는 테이블이 존재하지 않으면 MySQL이 죽습니다.

나는 데이터베이스가 존재하는지 확인하는 방법을 알고 :

SELECT EXISTS(SELECT * FROM information_schema.schemata WHERE schema_name = 'MyDatabase') 

하지만이 값이 0 일 때 반환하는 방법을 모르겠어요. 나는 이것을 시도했다 :

IF NOT (SELECT EXISTS(SELECT * FROM information_schema.schemata WHERE schema_name = 'MyDatabase')) THEN 
    BEGIN 
     RETURN 
    END; 
END IF; 

이 오류가 발생합니다 :

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT (SELECT EXISTS(SELECT * FROM information_schema.schemata WHERE ' at line 1 

나는 또한 데이터베이스 내의 테이블이 존재하는지 확인하고 그렇지 않은 경우 반환해야합니다. 다시 표가 존재하는지 확인하는 방법을 알고 있습니다.

SELECT EXISTS(SELECT * FROM information_schema.tables WHERE table_schema = 'MyDatabase' AND table_name = 'MyTable') 

그러나이 시점에서 스크립트를 종료하는 방법을 모르겠습니다.

편집

난 그냥 테이블이 존재하지 않는 경우이 오류가 발생하는 원인이되는 스크립트의 상단에 USE 문을 넣을 수 있다고 생각

:

USE `MyDatabase`; 

이 방법으로는 충분하지만 조건문을 사용하여이를 수행하는 방법을 알고있는 것이 좋습니다.

답변

0

if stament와 함께 사용할 수 있습니다.

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

같은 :

IF SCHEMA_NAME = '' THEN 
--do this-- 
ELSE 
-do this-- 
관련 문제