|
Проблема UPDATE другие строчки
|
|||
---|---|---|---|
#18+
Всем добрый вечер! Столкнулся с проблемой и пока не понимаю куда именно копать (в код, в настройки таблиц, в настройки БД или еще куда?). Дано: 1) Самая обычная таблица Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Есть еще таблица расширение с атрибутами: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
2) Есть две функции, которые написаны PLpgSQL. В одной у меня (упрощаем) банально идет INSERT в основную таблицу и в таблицу расширение: Код: plsql 1. 2. 3. 4. 5. 6. 7.
Вторая, в случае редактирование атрибутов (вторая таблица): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
И в данных первой таблицы я ПЕРИОДИЧЕСКИ вижу, что значения полей с датами (date_last_upd и date_ins ) имеют идентичные значения у нескольких строк соседних (от 2 до 6 строк). user_iddate_last_upddate_ins2662019-10-16 14:48:092019-10-16 14:13:212652019-10-16 14:50:542019-10-16 14:13:212642019-10-14 17:17:402019-10-14 17:17:482632019-10-14 17:17:402019-10-14 17:17:482622019-10-14 17:17:482019-10-14 17:17:48 В чём может быть проблема? куда копать? Нужен хелп) Код я пересмотрел несколько раз, ошибочных "не туда" UPDATE не делаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 00:59 |
|
Проблема UPDATE другие строчки
|
|||
---|---|---|---|
#18+
Legi, now - Текущая дата и время (на момент начала транзакции); Полагаю использовать clock_timestamp() вместо TIMESTAMP(0) 'now' будет более корректно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 09:29 |
|
Проблема UPDATE другие строчки
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
TIMESTAMP(0) 'now' - литерал константы. Он вычисляется один раз при разборе текста функции. И это ещё кэш хранимых процедур индивидуальный на каждый backend. Попробуйте записать такое в view - и в самом view будет дата создания view всегда. Выберите функцию по вкусу: https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT И обратите внимание на Tip в конце раздела, это как раз про то самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:10 |
|
Проблема UPDATE другие строчки
|
|||
---|---|---|---|
#18+
Спасибо за ответы. Пока остановился на этом Код: plsql 1.
понаблюдаю по результатам. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 23:26 |
|
Проблема UPDATE другие строчки
|
|||
---|---|---|---|
#18+
Делюсь апдейтом наблюдений - пока полет нормальный и подобных проблем не испытываю. Так же перешел на дату\время текущие не от транзакции, а от текущего момента в других местах - тоже подобная проблема вроде бы ушла. На случай, если кто-то искал решение по аналогичной проблеме. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2019, 15:29 |
|
Проблема UPDATE другие строчки
|
|||
---|---|---|---|
#18+
Anatoly B Legi, now - Текущая дата и время (на момент начала транзакции); Полагаю использовать clock_timestamp() вместо TIMESTAMP(0) 'now' будет более корректно. Добрый день! Наткнулся на этот пост и задумался... Я в ПГ не так давно... И по неопытности в default, insert и update использую current_timestamp, а не рекомендованный тут clock_timestamp(). Подскажите, есть ли у current_timestamp какие-то "подводные камни"? Или можно смело его юзать? А что юзать из этих двух, это уже дело вкуса? Или всё-таки есть какие-то преимущества? Заранее благодарен за разъяснения. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2020, 14:30 |
|
Проблема UPDATE другие строчки
|
|||
---|---|---|---|
#18+
MacArrow Anatoly B Legi, now - Текущая дата и время (на момент начала транзакции); Полагаю использовать clock_timestamp() вместо TIMESTAMP(0) 'now' будет более корректно. Добрый день! Наткнулся на этот пост и задумался... Я в ПГ не так давно... И по неопытности в default, insert и update использую current_timestamp, а не рекомендованный тут clock_timestamp(). Подскажите, есть ли у current_timestamp какие-то "подводные камни"? Или можно смело его юзать? А что юзать из этих двух, это уже дело вкуса? Или всё-таки есть какие-то преимущества? Заранее благодарен за разъяснения. Самоответ)) Подводный камень: current_timestamp = timestamp with time zone = Текущая дата и время ( на момент начала транзакции ) В принципе мне не очень критично, а возможно даже и больше подходящее... Но придётся теперь учитывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2020, 14:44 |
|
|
start [/forum/topic.php?fid=53&msg=39879020&tid=1994661]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 135ms |
0 / 0 |