powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Партиционирование и внешние ключи
13 сообщений из 13, страница 1 из 1
Партиционирование и внешние ключи
    #34253994
AlexanderFedyukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У кого какой опыт есть решения проблемы наложения внешних ключей на партиционированную таблицу?
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34254849
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чём вы видите особенности? Распространите свой вопрос.
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34254898
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ограничения внешних ключей не наследуются ( http://www.postgresql.org/docs/8.2/interactive/ddl-inherit.html : 5.8.1. Caveats).
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34255531
AlexanderFedyukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема состоит в следующем. Есть таблицы А и Б. С Б на А идет внешний ключ.Таблица А партиционирована в строгом соответствие с
http://www.postgresql.org/docs/8.2/interactive/ddl-partitioning.html
, таким образом при вставке в А в нее реально ничего не вставляетя. При вставке данных в Б - возникает ошибка с жалобой на внешний ключ. Кто как борололся с проблемой? Поделитесь пожалуйста опытом.
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34255601
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внешнии ключи не наследуются.
Так как "реально" в А ничего не вставляется то и возникает "касяк".
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34255614
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо избавляться от подобного внешнего ключа.
Можно написать свою проверку ссылочной целостности через триггер, например, или через другие таблицы, в которых реально будут эти значения ключей, на которые ссылается внешний ключ из Б.
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34255804
AlexanderFedyukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за вариант. Но может есть способы, чтоб и партиции и ключи были? ;-)
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34256113
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форейн кей на множество таблиц...? Чё-то сходу решение не получается.

Надо наверное триггер перед вставкой/изменеием всётаки сделать для таблицы Б. А в нём смотреть в объединение всех партиций и проверять есть ли там ключ.
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34257688
AlexanderFedyukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня вот какой еще вариант есть. К нему склоняюсь. Таблицы А и Б партиционировать по однотипным правилам, таким образом что записи из А.1 будут ссылаться на Б.1, из А.2 на Б.2 и из А на Б. При этом вроде бы и волки целы и овцы сыты.
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34258230
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только следует учесть, что с каждой новой парой партиций надо будет создавать внешний ключ вида Бn -> Аn.
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34516249
MySQLCraft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда! Во выясняется! А мускул 5.1 такого кажись не допустит. Там разделенная таблица логически как одна работает и FK на нее запросто...
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34516308
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MySQLCraftМда! Во выясняется! А мускул 5.1 такого кажись не допустит. Там разделенная таблица логически как одна работает и FK на нее запросто...видимо надо иметь в виду, что в постгрес "разделение" является побочным результатом - кому-то пришло в голову именно так пытаться использовать его фичу - идеологию наследования (INHERIT). которая сама по себе шире "разделения". (а больше похожа на иерархию классов)

Но, какабычна, более широкое решение (пока?) не содержит требуемых более узким применением фич. Просто из-за того, что "ширина" INHERIT заведомо выходит за случаи, позволяющие однозначно наследовать и прочие чеки. Наследуются только чеки, другие ограничения надо расписывать самостийно. Видимо, постгресу требуется развитие идеологии наследования по пути классификации различных случаев наследования, и обвязке этих случаев дополнительными служебными словами и прочими средствами.
...
Рейтинг: 0 / 0
Партиционирование и внешние ключи
    #34516737
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
где в недрах contrib есть что-то на эту тему - refint
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Партиционирование и внешние ключи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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