Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как пересоздать PRIMARY KEY в таблице? / 14 сообщений из 14, страница 1 из 1
15.11.2018, 16:04
    #39733626
комит
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
Не дропая FK других таблиц, которые на него ссылаются?



Добрый день.
...
Рейтинг: 0 / 0
15.11.2018, 16:28
    #39733651
комит
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
при удалении говорит - не могу удалить, на него ссылаются FK кучи других таблиц
...
Рейтинг: 0 / 0
15.11.2018, 17:28
    #39733708
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
комит,

А зачем?..


Можно сделать `REINDEX` для индекса под PK, но это блокирующая операция.
Можно дропать старый PK каскадом и создавать новый PK и FK в транзакции — тоже блокирующая и долгая транзакция.

Можно:
- создать новый UNIQUE CONSTRAINT
- сделать все колонки NOT NULL
- создать на всех подчинённых таблицах FK на этот новый UK
- удалить старый PK каскадом

Не одно и тоже, но поведение аналогичное.
...
Рейтинг: 0 / 0
15.11.2018, 17:58
    #39733730
комит
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
vyegorovкомит,

А зачем?..




Затем что индекс распух на порядок.
...
Рейтинг: 0 / 0
15.11.2018, 17:59
    #39733731
комит
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
vyegorovкомит,

Можно сделать `REINDEX` для индекса под PK, но это блокирующая операция.
Можно дропать старый PK каскадом и создавать новый PK и FK в транзакции — тоже блокирующая и долгая транзакция.


не подходит.
...
Рейтинг: 0 / 0
15.11.2018, 18:05
    #39733732
комит
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
vyegorovкомит,


Можно:
- создать новый UNIQUE CONSTRAINT
- сделать все колонки NOT NULL
- создать на всех подчинённых таблицах FK на этот новый UK
- удалить старый PK каскадом

Не одно и тоже, но поведение аналогичное.



Неужели нельзя пересоздать индекс для PK без дропа всех FK ?

(reindex с блокировкой не в счет)
...
Рейтинг: 0 / 0
15.11.2018, 18:07
    #39733735
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
комит,

pg_repack'ом можно. Не уверен на счёт обхода index-only, но репаком всей таблицы точно можно.
...
Рейтинг: 0 / 0
15.11.2018, 18:14
    #39733740
комит
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
Melkijкомит,

pg_repack'ом можно. Не уверен на счёт обхода index-only, но репаком всей таблицы точно можно.


Не, это тоже не вариант.
...
Рейтинг: 0 / 0
15.11.2018, 18:15
    #39733741
комит
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
Интересуют методы без установки стороннего ПО.


Как стандартными средствами postgreSql взять и пересоздать индекс для PRIMARY KEY.
...
Рейтинг: 0 / 0
15.11.2018, 18:27
    #39733749
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
комит,

Вам сказали несколько вариантов. Они вам не подходят. Следовательно, штатными средствами — никак.
...
Рейтинг: 0 / 0
15.11.2018, 18:32
    #39733752
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
комит,

стандартными - reindex.
REINDEX CONCURRENTLY нет и в ближайшем будущем не предвидится.
...
Рейтинг: 0 / 0
15.11.2018, 18:44
    #39733760
комит
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
vyegorovкомит,

Вам сказали несколько вариантов. Они вам не подходят. Следовательно, штатными средствами — никак.


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

Да, такие варианты не подходят.
...
Рейтинг: 0 / 0
15.11.2018, 18:45
    #39733764
комит
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
Melkijстандартными - reindex.


Это слишком жесткая жесть.




Я вот чего не пойму, почему FK требуют именно определенного PK.

Почему нельзя, например просто иметь уникальный индекс для этих самых FK в других таблицах?
...
Рейтинг: 0 / 0
15.11.2018, 19:54
    #39733792
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как пересоздать PRIMARY KEY в таблице?
комит,

почему кладовщик передает тмц по описи ?

патамушта проверить надо, что цифирь бьется. ить где гарантия, что склад тот же самый.

постгресу нужна отдельная операция -- нелочащая перебалансировка индекса. а то стыдоба какая-то.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как пересоздать PRIMARY KEY в таблице? / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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