Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
30.03.2018, 11:19
|
|||
---|---|---|---|
|
|||
INSERT OR UPDATE |
|||
#18+
добрый день, срочно нужна помощь. есть код, к примеру: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
При INSERT INTO возвращает tab_1_id, а при UPDATE не хочет. Необходимо что-бы в любом случае RETURNING возвращал tab_1_id Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2018, 11:27
|
|||
---|---|---|---|
INSERT OR UPDATE |
|||
#18+
band-rk, из виза во вне вроде не умеет. Пусть коллеги поправят, если я неправ ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2018, 11:31
|
|||
---|---|---|---|
INSERT OR UPDATE |
|||
#18+
band-rk, c 9.5 появилась конструкция insert .. on conflict update , я думаю намного лучше будет ее использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2018, 11:33
|
|||
---|---|---|---|
|
|||
INSERT OR UPDATE |
|||
#18+
Alexius, Я читал доки, но к сожалению нет возможности проопдейтить postgre, поэтому нужно что нить придумать со старым вариантом. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2018, 11:47
|
|||
---|---|---|---|
INSERT OR UPDATE |
|||
#18+
band-rk, просто склейте два cte: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Есть race condition. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2018, 11:56
|
|||
---|---|---|---|
|
|||
INSERT OR UPDATE |
|||
#18+
Melkij, О!, огромное человеческое спасибо, что то не додумался. Все получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2018, 12:11
|
|||
---|---|---|---|
INSERT OR UPDATE |
|||
#18+
band-rk, к сожалению, корректная реализация upsert в версиях до 9.5 предполагает использование хранимки с циклом внутри (см. пример merge_db в документации ). тут можно почитать, почему не так все просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2018, 12:17
|
|||
---|---|---|---|
|
|||
INSERT OR UPDATE |
|||
#18+
Alexius, Спасибо за информацию, в данный момент я реализую как посоветовал Melkij. Но при первой возможности обновлюсь до 9.6 и переделаю запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2018, 18:18
|
|||
---|---|---|---|
INSERT OR UPDATE |
|||
#18+
Alexiusband-rk, к сожалению, корректная реализация upsert в версиях до 9.5 предполагает использование хранимки с циклом внутри (см. пример merge_db в документации ). тут можно почитать, почему не так все просто. а что, очередь на хеш(ключа) и тейблоид не пройдёт. всегда думал что должно получаться через адвайзори локи . и всегда было лень. -- берем первым селектом виза лок на пару ключ, таблица, и выполняем далее апдейт с котятами . пришедший вторым будет ждать (если такой же конструкции). тонкий момент -- какой снепшот он, этот with cte, будет видеть после разлока очереди. тот с которым взял ресурс ? или не очень . что-то начинаю вспоминать. что что-то такое на ту же тему проверял. результата не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2018, 19:13
|
|||
---|---|---|---|
INSERT OR UPDATE |
|||
#18+
qwwq, да, с advisory lock'ами вариант я думаю рабочий, но "неаккуратно как-то") не приходилось пока с такой реализацией сталкиваться. снепшот по идее должен быть тот же, с которым лок брался, если это один запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2018, 19:20
|
|||
---|---|---|---|
INSERT OR UPDATE |
|||
#18+
Alexius, advisory lock хотя бы не lock table, как некоторые делают =) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=1995863]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 130ms |
0 / 0 |