powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Hstore - INSERT вместо UPDATE, если Hstore Not NULL
4 сообщений из 4, страница 1 из 1
Hstore - INSERT вместо UPDATE, если Hstore Not NULL
    #39324933
amnesia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мастеров баз данных приветствую!
Изучаю базу данных, пишу тестовое приложение. Решил использовать тип hstore - для одного поля. Так как мне показалось это оптимальным хранением информации, логичности, осталось только понять реализуемо ли.
Расскажу на пальцах о задаче:
1)Есть таблица с финансовыми показателями за месяц, в последнем столбце хотел бы в виде словаря( ключ - значение), сохранять значения. "Допустим (Фамилия - Зарплата)". Почему так?
Потому что сегодня он один, завтра их 20. Создавать отдельную таблицу под это дело не вижу смысла, так как получается в дальнейшем у каждого будет 12 строк(месяцев) или столбцов и т.п.
А так получается единственное поле со значениями, которые обновляются в базе после определенной процедуры, при действиях этих сотрудников в течении месяца.

Все даже работает, но есть одна проблема:
Как только поле Hstore становится не пустым, то происходит зачем-то INSERT, вместо UPDATE на уровне базы данных(Посмотрел в Логах), хотя все тригеры выключил.( Смысл тригеров - если сотрудник сделал дело, то его процент высчитывается и обновляется (ключ - значение) Hstore этого сотрудника, если такого нет, то добавляется ключ - значение(не строка!!).


Так вот сейчас если первый(успевший) сотрудник что-то сделал, все прекрасно посчиталось, добавилось. Второй делает, создается новая запись с указанием того же месяца и всеми пустыми полями.

Вот логи:
СООБЩЕНИЕ: оператор: SELECT "month_stat"."id", "month_stat"."month", "month_stat"."month_all", "month_stat"."month_profit", "month_stat"."month_tabako", "month_stat"."month_tabako_weight", "month_stat"."month_access", "month_stat"."month_zp", "month_stat"."month_medium", "month_stat"."month_zatrat", "month_stat"."month_buy_cart", "month_stat"."month_sell_cart", "month_stat"."month_zp_people" FROM "month_stat" WHERE ("month_stat"."month_zp_people" = ''::hstore AND "month_stat"."month" = '92016')

Я не могу понять, кто ему говорить проверять вот это "month_stat"."month_zp_people" = ''::hstore.
Я специально вообще вырубил все тригеры(А тригеры естественно сравнивают лишь наличие месяца в ячейке "month_stat"."month" = '92016'), убрал INSERT, но все равно появляется((
Ну и естественно далее в логах, так как он не нашел такого поля

INSERT INTO "month_stat" ("month", "month_all", "month_profit", "month_tabako", "month_tabako_weight", "month_access", "month_zp", "month_medium", "month_zatrat", "month_buy_cart", "month_sell_cart", "month_zp_people") VALUES ('92016', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''::hstore) RETURNING "month_stat"."id"

Есть идеи, откуда эта автоматизация появляется?
Или есть советы по реализации моей задумки?
...
Рейтинг: 0 / 0
Hstore - INSERT вместо UPDATE, если Hstore Not NULL
    #39325145
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amnesia,

Ещё раз и с минимально воспроизводимым примером на SQL. DDL, запросы, что получаете и что предполагали получить.
...
Рейтинг: 0 / 0
Hstore - INSERT вместо UPDATE, если Hstore Not NULL
    #39325779
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очень похоже, что на вашей таблице есть rule : допустим есть правило, что если поле hstore не нулевое то выполня одна операция иначе другая.
...
Рейтинг: 0 / 0
Hstore - INSERT вместо UPDATE, если Hstore Not NULL
    #39329332
amnesia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Legushkaочень похоже, что на вашей таблице есть rule : допустим есть правило, что если поле hstore не нулевое то выполня одна операция иначе другая.

Легушка, права так заизучался и внедрился в Postgres, что забыл посмотреть в Django в одном модуле код, который и имел правило get o create.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Hstore - INSERT вместо UPDATE, если Hstore Not NULL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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