MySQL과 달리 PostgreSQL은 일반적으로 사용되는 "CREATE DATABASE IF NOT EXISTS" 구문을 지원하지 않습니다. 이로 인해 이미 존재하거나 존재하지 않을 수 있는 JDBC를 통해 데이터베이스를 생성할 때 문제가 발생합니다.
방법 1: psql에서 조건문 사용
이 방법은 psql에서 실행되는 조건부 DDL 문을 활용합니다.
<code class="language-sql">SELECT 'CREATE DATABASE mydb' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec</code>
gexec
명령은 쿼리 출력의 각 열을 실행 가능한 SQL 문으로 처리하도록 psql에 지시합니다. 이를 통해 데이터베이스가 존재하지 않는 경우에만 데이터베이스를 생성할 수 있습니다.
방법 2: 쉘 명령어를 이용해 조건문 실행
psql을 여러 번 호출하지 않으려면 셸 명령을 사용하여 조건문을 실행할 수 있습니다.
<code class="language-bash">echo "SELECT 'CREATE DATABASE mydb' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec" | psql</code>
이 명령은 데이터베이스가 존재하지 않는 경우에만 실행되는 블록에 명령문을 래핑합니다.
방법 3: PostgreSQL 트랜잭션에서 dblink 사용
또 다른 옵션은 dblink를 사용하여 현재 데이터베이스에 다시 연결하는 것입니다. 이는 트랜잭션 외부에서 수행됩니다.
<code class="language-sql">DO $do$ BEGIN IF EXISTS (SELECT FROM pg_database WHERE datname = 'mydb') THEN RAISE NOTICE '数据库已存在'; ELSE PERFORM dblink_exec('dbname=' || current_database(), 'CREATE DATABASE mydb'); END IF; END $do$;</code>
이 방법을 사용하려면 dblink 모듈을 설치해야 합니다.
위 내용은 아직 존재하지 않는 경우에만 PostgreSQL 데이터베이스를 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!