2013-04-04 23 views
11

Czy istnieje analogia do CREATE TABLE IF NOT EXISTS do tworzenia baz danych?Utworzenie bazy danych Postgres, jeśli nie istnieje

Tło: Piszę skrypt, aby automatycznie skonfigurować schemat w PostgreSQL na nieznanym systemie. Nie jestem pewien, czy baza danych (a nawet część schematu) była już wdrożona, więc chcę, aby mój kod nie został zignorowany (lub najlepiej nawet pokazałby błędy), jeśli część struktury już istnieje. Chcę odróżnić błędy, które uniemożliwiają mi tworzenie bazy danych (tak abort przyszłe zmiany schematu, ponieważ nie będą działać) z tego błędu.

Odpowiedz

4

Nie, ale można wysłać zapytanie do tabeli pg_catalog.pg_database, aby sprawdzić, czy istnieje.

+1

Trzeba to zrobić w funkcji, a to nie zadziała w 9.3, ponieważ Postgres nie pozwala na tworzenie/usuwanie baz danych z funkcji wewnętrznej lub ciągu wielu poleceń. – ahanin

+0

Ale możesz napisać skrypt zewnętrzny w php, python, perlu lub cokolwiek chcesz. – Eelke

+1

Czy nie byłoby prostsze po prostu użycie DROP TABLE IF IF EXISTS "foo"; UTWÓRZ TABELĘ "foo"; – Enwired

Powiązane problemy