2013-07-15 4 views
0

간단한 SQL 스크립트를 작성 중이며 존재하지 않는 경우 새 데이터베이스를 작성해야합니다 (이미 덮어 쓰거나 테이블을 놓을 수는 없습니다).CREATE DATABASE가 덮어 씁니까?

ANSI 호환이 필요합니다. W3 Schools에 따라 :

CREATE DATABASE my_db; 

는 ... ANSI 호환입니다. 그러나 my_db이 이미 존재하는 경우 그 행동이 무엇인지를 명시하지 않습니다.

질문 : 존재하지 않는 경우 my_db을 만드는 ANSI 호환 SQL을 작성하거나 이미 존재하는 경우 아무 것도 수행하지 않는 방법은 무엇입니까? 미리 감사드립니다!

답변

0

사용중인 명령은 공급 업체 당 지정된 및 사양 (least SQL:2008 (12.1MB 우편 아카이브)에서), 구현이 데이터베이스의 창조를 위해 무엇인지 언급하지 않는까지 세부 사항을 떠나고있다 개별 공급 업체.

CREATE DATABASE을 발행했을 때 덮어 쓸 수 있지만 개인적인 경험이 없을 가능성이있는 RDBMS를 가질 수 있습니다. 가장 좋은 옵션은 지원하려는 각 RDBMS 공급 업체의 제품을 테스트하는 것입니다.

+0

감사합니다 @cfeduke (+1) - Matt McHugh의 대답 아래 내 의견을 참조하십시오 - 나는 당신을 위해 같은 질문을했습니다! –

+1

CREATE DATABASE는 ANSI와 호환되지 않기 때문에 명령문의 실행에 의해 반환 된 오류를 처리하는 데 표준을 준수하는 방법이 될 수 없습니다 (데이터베이스를 대체하고 오류가 발생하지 않는 경우). 불행히도 여기에는 간단한 해결책이 없습니다. 할 수있는 최선의 방법은 지원하려는 주 데이터베이스 공급 업체를 선택하고 올바른 SQL 명령을 RDBMS로 보내는 스크립트를 작성하고 지원되지 않는 RDBMS를 사용자주의로 남겨 두는 것입니다. – cfeduke

+0

감사합니다 @cfeduke (+1) - 마지막 후속 조치, 약속드립니다 : "* ... 할 수있는 최선의 방법은 지원하려는 주 데이터베이스 공급 업체를 선택하고 올바른 SQL 명령을 실행하는 스크립트를 만드는 것입니다. RDBMS ... * "-이 작업을 수행하는 방법에 대한 예제를 제공 할 수 있습니까? 좋아하는 RDBMS를 선택하십시오. 필자는 벤더를 어떻게 자동으로 탐지하고 해당 벤더에 특정한 CREATE DATABASE를 실행하는지에 대한 예를보고 싶을뿐입니다. 다시 한 번 감사드립니다! –

1

이미 존재하는 데이터베이스를 만들려고하면 DBMS에서 오류가 발생합니다. DB가 존재하는지 확인한 후 DBMS별로 차이가 없는지 확인하는 프로세스. 어쨌든 DB를 삭제하고 다시 생성하지는 않습니다.

+0

감사합니다. @Matt McHugh (+1) - 제기 된 오류 (기존 DB를 만들려고 할 때 발생하는)를 "catch"하여 처리하는 ANSI 호환 방법이 있습니까? 그것은 나에게 실행 가능한 해결책일지도 모른다. .. 다시 한번 감사드립니다! –

+1

불행히도, 나는 그것을 모릅니다. 내가 아는 모든 오류 처리 기술은 공급 업체에 따라 다릅니다. –

+0

감사합니다. Matt McHugh (+1) - cfeduke의 대답에 대한 나의 마지막 후속 조치를 참조하십시오. - 나는 당신을 위해 같은 질문을했습니다! –