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 サイトの他の関連記事を参照してください。