ホームページ > データベース > mysql チュートリアル > PostgreSQL データベースがまだ存在しない場合にのみ作成するにはどうすればよいですか?

PostgreSQL データベースがまだ存在しない場合にのみ作成するにはどうすればよいですか?

DDD
リリース: 2025-01-12 20:46:45
オリジナル
593 人が閲覧しました

How Can I Create a PostgreSQL Database Only If It Doesn't Already Exist?

PostgreSQLデータベース条件作成方法

概要

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 を使用する

もう 1 つのオプションは、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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート