powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временно отключить ограничение первичного ключа
3 сообщений из 3, страница 1 из 1
Временно отключить ограничение первичного ключа
    #38841879
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть таблица, в которой имеется составной ключ, например "идентификатор контракта" и "год исполнения".
Выполняется операция UPDATE по всей таблице, поле "год исполнения" увеличивается на единицу для всех контрактов, например

Код: sql
1.
UPDATE table1 SET year = year + 1



При выполнении данной команды получаем ошибку, например

ОШИБКА: повторяющееся значение ключа нарушает ограничение уникальности "table1_idx"
DETAIL: Ключ "(year, id_contract)=(2016, 3305)" уже существует.

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

Вопрос, как на время выполнения команды, блокировать контроль на ограничение уникальности?
Есть решение удалить ключ и после его создать, но мне кажется это не лучшее решение. Есть ли другие варианты?
Спасибо
...
Рейтинг: 0 / 0
Временно отключить ограничение первичного ключа
    #38842096
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-trot...

Вопрос, как на время выполнения команды, блокировать контроль на ограничение уникальности?
Есть решение удалить ключ и после его создать, но мне кажется это не лучшее решение. Есть ли другие варианты?
Спасибо


Код: plsql
1.
2.
ALTER TABLE table1
  ADD CONSTRAINT table1_cont UNIQUE (year, id_contract) DEFERRABLE;




Но можно и в одной транзакции удалить, обновить, создать. Это же разовая операция?
...
Рейтинг: 0 / 0
Временно отключить ограничение первичного ключа
    #38842153
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trotДобрый день.

Есть таблица, в которой имеется составной ключ, например "идентификатор контракта" и "год исполнения".
Выполняется операция UPDATE по всей таблице, поле "год исполнения" увеличивается на единицу для всех контрактов, например

Код: sql
1.
UPDATE table1 SET year = year + 1



При выполнении данной команды получаем ошибку, например

ОШИБКА: повторяющееся значение ключа нарушает ограничение уникальности "table1_idx"
DETAIL: Ключ "(year, id_contract)=(2016, 3305)" уже существует.

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

Вопрос, как на время выполнения команды, блокировать контроль на ограничение уникальности?
Есть решение удалить ключ и после его создать, но мне кажется это не лучшее решение. Есть ли другие варианты?
Спасибо

отсортировать по дате назад и обновить в цикле
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временно отключить ограничение первичного ключа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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