Q:

Есть ли аналог IF NOT EXISTS для создания DB?

Мне перед созданием DB в запросе надо проверить не существует ли она уже.
Когда я создаю таблицу я пишу create table if not exists ... а есть ли синоним который будет работать с create database что бы мне перед созданием базы проверить нет ли ее уже? В PostgresSQL.

A:

Вот решение вашей задачи на английском SO. Приведу ответ оттуда:
DO
$do$
DECLARE
  _db TEXT := 'имя создаваемой БД';
  _user TEXT := 'пользователь';
  _password TEXT := 'пароль';
BEGIN
  CREATE EXTENSION IF NOT EXISTS dblink; -- включение функции dblink 
  IF EXISTS (SELECT 1 FROM pg_database WHERE datname = _db) THEN
    RAISE NOTICE 'Database already exists';
  ELSE
    PERFORM dblink_connect('host=localhost user=' || _user || ' password=' || _password || ' dbname=' || current_database());
    PERFORM dblink_exec('CREATE DATABASE ' || _db);
  END IF;
END
$do$

