Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mensimulasikan `BUAT PANGKALAN DATA JIKA TIDAK WUJUD` dalam PostgreSQL?

Bagaimana untuk Mensimulasikan `BUAT PANGKALAN DATA JIKA TIDAK WUJUD` dalam PostgreSQL?

Susan Sarandon
Lepaskan: 2025-01-12 20:31:44
asal
493 orang telah melayarinya

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

Simulasi dalam PostgreSQLCREATE DATABASE IF NOT EXISTS

Soalan:

PostgreSQL sendiri tidak menyokong sintaks CREATE DATABASE IF NOT EXISTS secara asli Bagaimana untuk mensimulasikan ciri ini dalam PostgreSQL?

Penyelesaian:

Gunakan penyelesaian dalam psql:

Gunakan gexec metacommand untuk melaksanakan pernyataan bersyarat berikut:

<code class="language-sql">SELECT 'CREATE DATABASE mydb'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec</code>
Salin selepas log masuk

Jika pangkalan data mydb tidak wujud, pernyataan ini akan menciptanya.

Gunakan penyelesaian daripada shell:

Panggil psql menggunakan arahan berikut:

<code class="language-bash">echo "SELECT 'CREATE DATABASE mydb' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec" | psql</code>
Salin selepas log masuk

Gunakan penyelesaian dalam transaksi Postgres:

Gunakan dblink untuk menyambung kembali ke pangkalan data semasa untuk mengelakkan had transaksi:

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan `BUAT PANGKALAN DATA JIKA TIDAK WUJUD` dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan