Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Hstore - INSERT вместо UPDATE, если Hstore Not NULL
|
|||
|---|---|---|---|
|
#18+
Мастеров баз данных приветствую! Изучаю базу данных, пишу тестовое приложение. Решил использовать тип 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" Есть идеи, откуда эта автоматизация появляется? Или есть советы по реализации моей задумки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2016, 01:17 |
|
||
|
Hstore - INSERT вместо UPDATE, если Hstore Not NULL
|
|||
|---|---|---|---|
|
#18+
amnesia, Ещё раз и с минимально воспроизводимым примером на SQL. DDL, запросы, что получаете и что предполагали получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2016, 11:26 |
|
||
|
Hstore - INSERT вместо UPDATE, если Hstore Not NULL
|
|||
|---|---|---|---|
|
#18+
очень похоже, что на вашей таблице есть rule : допустим есть правило, что если поле hstore не нулевое то выполня одна операция иначе другая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 01:18 |
|
||
|
Hstore - INSERT вместо UPDATE, если Hstore Not NULL
|
|||
|---|---|---|---|
|
#18+
Legushkaочень похоже, что на вашей таблице есть rule : допустим есть правило, что если поле hstore не нулевое то выполня одна операция иначе другая. Легушка, права так заизучался и внедрился в Postgres, что забыл посмотреть в Django в одном модуле код, который и имел правило get o create. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 21:11 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=84&tid=1996934]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 321ms |
| total: | 480ms |

| 0 / 0 |
