2011-12-23 4 views
1

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

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

моя СУБД - Postgres.

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

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

create table "Foo" 
    id integer; 

Пример в неправильном порядке, вот почему она не будет работать.

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

ответ

2

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

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

Лучшие способы борьбы с этим, скорее всего:

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

Пойду с №2 – Peter

0

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

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

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

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

+0

Я думаю, что правильная структура команд ddl - это только путь. Сначала создайте базовые таблицы, а затем добавьте FK с помощью команды alter. – Peter