Im Gegensatz zu MySQL unterstützt PostgreSQL nicht die häufig verwendete Syntax „Datenbank erstellen, wenn nicht vorhanden“. Dies führt zu Herausforderungen beim Erstellen von Datenbanken über JDBC, die möglicherweise bereits vorhanden sind oder nicht.
Methode 1: Bedingte Anweisungen in psql verwenden
Diese Methode nutzt bedingte DDL-Anweisungen, die in psql ausgeführt werden:
<code class="language-sql">SELECT 'CREATE DATABASE mydb' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec</code>
gexec
weist psql an, jede Spalte der Abfrageausgabe als ausführbare SQL-Anweisung zu behandeln. Dadurch kann die Datenbank nur dann erstellt werden, wenn sie nicht vorhanden ist.
Methode 2: Verwenden Sie den Shell-Befehl, um eine bedingte Anweisung auszuführen
Um zu vermeiden, dass psql mehrmals aufgerufen wird, können Sie Shell-Befehle verwenden, um bedingte Anweisungen auszuführen:
<code class="language-bash">echo "SELECT 'CREATE DATABASE mydb' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec" | psql</code>
Dieser Befehl umschließt die Anweisung in einem Block, der nur ausgeführt wird, wenn die Datenbank nicht vorhanden ist.
Methode 3: Verwenden Sie dblink in PostgreSQL-Transaktionen
Eine andere Möglichkeit besteht darin, mit dblink eine Verbindung zur aktuellen Datenbank herzustellen, was außerhalb der Transaktion durchgeführt wird:
<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>
Für diese Methode muss das dblink-Modul installiert sein.
Das obige ist der detaillierte Inhalt vonWie kann ich eine PostgreSQL-Datenbank nur erstellen, wenn sie noch nicht vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!