Maison >base de données >tutoriel mysql >Comment simuler « CRÉER UNE BASE DE DONNÉES SI NON EXISTE » dans PostgreSQL ?

Comment simuler « CRÉER UNE BASE DE DONNÉES SI NON EXISTE » dans PostgreSQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-12 20:31:44495parcourir

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

Simulation dans PostgreSQLCREATE DATABASE IF NOT EXISTS

Question :

PostgreSQL lui-même ne prend pas en charge nativement la syntaxe CREATE DATABASE IF NOT EXISTS Comment simuler cette fonctionnalité dans PostgreSQL ?

Solution :

Utiliser une solution de contournement dans psql :

Utilisez la métacommande gexec pour exécuter l'instruction conditionnelle suivante :

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

Si la base de données mydb n'existe pas, cette instruction la créera.

Utiliser la solution de contournement depuis le shell :

Invoquez psql à l'aide de la commande suivante :

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

Utiliser des solutions de contournement dans les transactions Postgres :

Utilisez dblink pour vous reconnecter à la base de données actuelle afin d'éviter les limites de transactions :

<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>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn