Определите FK, где целевой таблицы не существует - PullRequest
1 голос
/ 23 декабря 2011

Когда я создаю таблицу с определением FK непосредственно в команде CREATE, а целевая таблица еще не существует, это приводит к ошибке.

Может ли проверка, если целевая таблица существует, каким-то образом приостановлена?

моя СУБД - Postgres.

Пример (псевдокод):

create table "Bar"
    foo_id integer FK of "Foo"."id",
    someattr text;

create table "Foo"
    id integer;

Пример в неправильном порядке, поэтому он не запускается.

Я пытаюсьвоссоздать базу данных в пакетном режиме на основе определений во многих файлах sql.

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Когда я создаю таблицу с определением FK непосредственно в команде CREATE, а таблица назначения еще не существует, это приводит к ошибке.

Может ли проверка, если целевая таблица существует, как-то приостановлена?

Лучшие способы справиться с этим, вероятно:

  1. Создайте таблицы в правильном порядке или
  2. Создание ограничений вне создания таблицы, после создания всех таблиц.
0 голосов
/ 23 декабря 2011

Грубая сила всегда является опцией.

Продолжайте запускать сценарии DDL, пока не получите запуск без ошибок.

Больше элегантности требует последовательного структурирования ваших скриптов.

Добавление проверок существования возможно, но я не слишком знаком с метаданными postgres.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...