ホームページ > データベース > mysql チュートリアル > PostgreSQL で「CREATE DATABASE IF NOT EXISTS」をシミュレートするには?

PostgreSQL で「CREATE DATABASE IF NOT EXISTS」をシミュレートするには?

Susan Sarandon
リリース: 2025-01-12 20:31:44
オリジナル
493 人が閲覧しました

How to Simulate `CREATE DATABASE IF NOT EXISTS` in PostgreSQL?

PostgreSQL でのシミュレーションCREATE DATABASE IF NOT EXISTS

質問:

PostgreSQL 自体は CREATE DATABASE IF NOT EXISTS 構文をネイティブにサポートしていません。PostgreSQL でこの機能をシミュレートするにはどうすればよいですか?

解決策:

psql で回避策を使用します:

gexec メタコマンドを使用して、次の条件ステートメントを実行します:

<code class="language-sql">SELECT 'CREATE DATABASE mydb'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec</code>
ログイン後にコピー

データベース mydb が存在しない場合は、このステートメントによってデータベースが作成されます。

シェルからの回避策を使用します:

次のコマンドを使用して psql を呼び出します:

<code class="language-bash">echo "SELECT 'CREATE DATABASE mydb' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec" | psql</code>
ログイン後にコピー

Postgres トランザクションで回避策を使用します:

トランザクション制限を回避するには、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>
ログイン後にコピー

以上がPostgreSQL で「CREATE DATABASE IF NOT EXISTS」をシミュレートするには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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