Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Создание двух таблиц ссылающихся друг на друга! / 7 сообщений из 7, страница 1 из 1
28.02.2008, 22:04
    #35161867
Leximus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание двух таблиц ссылающихся друг на друга!
Всем привет!
Столкнулся с такой проблемой. Мне необходимо создать две таблицы, и в каждой таблице, есть поля которые ссылаются друг на друга. Получается что первая таблица не создаётся потому что нет второй и наоборот!
Я вроде придумал пока два способа, но не знаю, прокатят они или нет!
Первый способ создать Таблицу А без полей внешних сылок на таблицу Б, затем создать таблицу Б, и потом добавить в таблицу А поля ссылающиеся на таблицу Б! Но не знаю как правильно это осущетсвить языком SQL(добавлять поля пока не научился)

Второй способ состоит в том чтобы создать таблицу А, затем таблицу Б, затем заменить(удалить и создать заного) таблицу А. В принцепе похож на предыдущий способ но я знаю как реализовать, только сомневаюсь что прокатит удаление таблицы, когда есть другие на неё ссылающиеся таблицы!

Но может кто то знает третий спосою и попроще?

Спасибо!

P.S.: И позжалуйста, подскажите как правильно добавить в таблицу поле - внешнюю ссылку.
...
Рейтинг: 0 / 0
28.02.2008, 22:37
    #35161893
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание двух таблиц ссылающихся друг на друга!
внешняя ссылка - ни что иное как самостоятельный объект (constraint), который совсем не обязательно создавать в момент создания таблицы. А следовательно
1. Создаем одну таблицу.
2. Создаем другую таблицу
3. Создаем констреинт foreign key с одной на другую
4. создаем форин кей с другой на первую

Всё готово. Поля при этом добавлять не надо, их надо создавать сразу в таблицах.
...
Рейтинг: 0 / 0
29.02.2008, 00:17
    #35161973
Leximus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание двух таблиц ссылающихся друг на друга!
pamirвнешняя ссылка - ни что иное как самостоятельный объект (constraint), который совсем не обязательно создавать в момент создания таблицы. А следовательно
1. Создаем одну таблицу.
2. Создаем другую таблицу
3. Создаем констреинт foreign key с одной на другую
4. создаем форин кей с другой на первую

Всё готово. Поля при этом добавлять не надо, их надо создавать сразу в таблицах.

Спасибо! А какогонибудь маленького примера нету?
Как правильно внешнюю сылку создавать?
...
Рейтинг: 0 / 0
29.02.2008, 22:49
    #35164563
Leximus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание двух таблиц ссылающихся друг на друга!
Ну позжалуйста, помогите с ответом!
...
Рейтинг: 0 / 0
29.02.2008, 22:50
    #35164567
Niemi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание двух таблиц ссылающихся друг на друга!
после создания таблиц пользуем ALTER TABLE. а далее всё в доке можно найти.
-- signature --
Да кому он нужен этот 8-ой номер?
...
Рейтинг: 0 / 0
29.02.2008, 23:23
    #35164586
Степан H.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание двух таблиц ссылающихся друг на друга!
LeximusНу позжалуйста, помогите с ответом!

Если Вам лень учиться правильно писать зависимости, можете использовать для этой задачи
редактор pgAdmin или EMSPostgreSQL Manager.

(хотя как же без них ))) ).
...
Рейтинг: 0 / 0
29.02.2008, 23:53
    #35164614
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание двух таблиц ссылающихся друг на друга!
Leximus пишет:
> Столкнулся с такой проблемой. Мне необходимо создать две таблицы, и в
> каждой таблице, есть поля которые ссылаются друг на друга. Получается
> что первая таблица не создаётся потому что нет второй и наоборот!

Классическая проблема, и классическое же решение - создавайте
таблицы в два этапа.
Сначала создавайте сами таблицы (все) НО БЕЗ FOREIGN KEY CONSTRAINTs

Затем создавайте констрейнты FOREIGN KEY с помощью ALTER TABLE.

И еще также напомню, что при налиции циклических ссылок таблиц друг на друга
одно из ссылающихся полей должно быть обязательно NULLable, чтобы разорвать
цикл зависимостей.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Создание двух таблиц ссылающихся друг на друга! / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]