2013-04-04 33 views
11

データベースの作成には、CREATE TABLE IF NOT EXISTSというアナログがありますか?Postgresデータベースが存在しない場合は作成

背景:PostgreSQLで不明なシステムにスキーマを自動的に設定するためのスクリプトを作成しています。データベース(またはスキーマの一部)がすでにデプロイされているかどうかはわかりません。そのため、構造の一部が既に存在する場合、コードが失敗しないように(または理想的にはエラーを表示するように)構造化します。私は、このエラーから私がデータベースを作成するのを妨げるエラー(将来のスキーマの変更は動作しないので中止)を区別したいと思います。

答えて

4

いいえ、pg_catalog.pg_databaseテーブルにクエリが存在するかどうかを確認できます。

+1

Postgresは関数内または複数のコマンド文字列からデータベースを作成/削除することができないため、関数でこれを行う必要があります。これは9.3では機能しません。 – ahanin

+0

しかし、PHP、Python、Perlなどの外部スクリプトを書くことができます。 – Eelke

+1

DROP TABLE IF EXISTS "foo"を使用するほうが簡単ではないでしょうか。 CREATE TABLE "foo"; – Enwired

関連する問題