Задать вопрос
@shupike

Как отредактировать строку в таблице, не имеющей primary key?

Доброго дня, коллеги! Посоветоваться бы - есть база на PostgreSql, подключаюсь как через Win32-приложение, так и через Веб. По ошибке добавили сотрудницу в базу (она сменила фамилию, не обратили внимания, что такая запись в таблице уже существует). Хотел через pgadmin отредактировать строки, связанные с этим пользователем, но таблица не имеет primary key и pgadmin не дает исправить. Мне бы не хотелось менять структуру таблицы, можно ли через ssh как-то изменить значение в таблице? В крайнем случае придется, наверное, удалить записи, связанные с этим пользователем и добавить заново с уже корректным значением? Вот как это выглядит на скриншотах.

68e8c2221e11a208494695.jpeg
68e8c2291e566649511612.jpeg
  • Вопрос задан
  • 198 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
@Akina
Сетевой и системный админ, SQL-программист.
pgadmin не дает исправить.

Значит, используйте SQL-запрос. И повнимательнее - чтобы количество ошибок при выполнении запроса не увеличилось...

таблица не имеет primary key

Создайте в таблице первичный ключ. Лучше синтетический.
С другой стороны, вы пишете:

отредактировать строки, связанные с этим пользователем

Если есть связанные записи - значит, есть внешние ключи и соответственно как минимум уникальные индексы. Что-то как-то не бьётся...

По ошибке добавили сотрудницу в базу ... не обратили внимания, что такая запись в таблице уже существует

Создайте соответствующие ограничения (UNIQUE index) в структуре.

Мне бы не хотелось менять структуру таблицы

А регулярно купаться в дерьме - хотелось бы? Хотите спокойно спать - отставьте свои хотелки в сторону и сделайте так, чтобы проблем, подобных описанной, не могло произойти в принципе.
Ответ написан
Melkij
@Melkij
DBA для вашего PostgreSQL?
Написать запрос и выполнить.

Ещё можно поискать в настройках вашего клиента, нет ли возможности отключить этот режим. Это ограничение именно клиента, сам postgresql не требует существование primary key.
Ответ написан
@Everything_is_bad
А pgadmin не позволяет что ли руками написать запрос? И в чем проблема запустить например psql и руками написать запросы?
Ответ написан
@shupike Автор вопроса
Решил вот так:
update history set employer_code = '165' where device_code='48' and date='2022-12-01' returning *;
Заменил employer_code с 23 на 165.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы