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



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

А зачем?..


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

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

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

А зачем?..




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

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


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


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

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



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

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

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

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


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


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

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

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

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


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

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


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




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

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

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

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

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


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