Heim > Datenbank > MySQL-Tutorial > Wie simuliere ich „Datenbank erstellen, wenn nicht vorhanden' in PostgreSQL?

Wie simuliere ich „Datenbank erstellen, wenn nicht vorhanden' in PostgreSQL?

Susan Sarandon
Freigeben: 2025-01-12 20:31:44
Original
493 Leute haben es durchsucht

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

Simulation in PostgreSQLCREATE DATABASE IF NOT EXISTS

Frage:

PostgreSQL selbst unterstützt die CREATE DATABASE IF NOT EXISTS-Syntax nicht nativ. Wie kann diese Funktion in PostgreSQL simuliert werden?

Lösung:

Problemumgehung in psql verwenden:

Verwenden Sie den Metabefehl gexec, um die folgende bedingte Anweisung auszuführen:

<code class="language-sql">SELECT 'CREATE DATABASE mydb'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec</code>
Nach dem Login kopieren

Wenn die Datenbank mydb nicht existiert, wird sie mit dieser Anweisung erstellt.

Verwenden Sie die Problemumgehung über die Shell:

Rufen Sie psql mit dem folgenden Befehl auf:

<code class="language-bash">echo "SELECT 'CREATE DATABASE mydb' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec" | psql</code>
Nach dem Login kopieren

Verwenden Sie Problemumgehungen in Postgres-Transaktionen:

Verwenden Sie dblink, um eine Verbindung zur aktuellen Datenbank herzustellen, um Transaktionsbeschränkungen zu vermeiden:

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie simuliere ich „Datenbank erstellen, wenn nicht vorhanden' in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage