powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPSERT - зачем здесь where?
6 сообщений из 6, страница 1 из 1
UPSERT - зачем здесь where?
    #39302730
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здесь автор описывает пример апсерта
https://hashrocket.com/blog/posts/upsert-records-with-postgresql-9-5


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
insert into pinned_tweets (user_handle, tweet_id, pinned_at)
  values (
    'rey',
    1,
    clock_timestamp()
  )
on conflict (user_handle)
do update set (tweet_id, pinned_at) = (1, clock_timestamp())
where pinned_tweets.user_handle = 'rey'; -- <--------------------------?

-- INSERT 0 1

select * from pinned_tweets where user_handle = 'rey';
--  tweet_id | user_handle |          pinned_at
-- ----------+-------------+------------------------------
--         1 | rey         | 2016-01-11 17:09:55.41554-06
-- (1 row)



Не пойму - зачем там вхере?
Имхую, что результат будет тот же, а смысл тогда?
...
Рейтинг: 0 / 0
UPSERT - зачем здесь where?
    #39302749
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Наверное чтобы изменить только 1 запись, которая оказалась конфликтующей, а не всю таблицу?
...
Рейтинг: 0 / 0
UPSERT - зачем здесь where?
    #39302872
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovРолг Хупин,

Наверное чтобы изменить только 1 запись, которая оказалась конфликтующей, а не всю таблицу?

а что разве иначе вся таблица апдейтнется?
...
Рейтинг: 0 / 0
UPSERT - зачем здесь where?
    #39302889
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovРолг Хупин,

Наверное чтобы изменить только 1 запись, которая оказалась конфликтующей, а не всю таблицу?

Без этого критерия у меня не апдейтится вся таблица, а только конфликтная запись
Апдейтится подмножество с таким же набором, как указано в конфликте
...
Рейтинг: 0 / 0
UPSERT - зачем здесь where?
    #39302999
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинБез этого критерия у меня не апдейтится вся таблица, а только конфликтная запись
Апдейтится подмножество с таким же набором, как указано в конфликтеАпдейтяться те записи, которые вызвали конфликт: https://www.postgresql.org/docs/current/static/sql-insert.html#SQL-ON-CONFLICT ON CONFLICT DO UPDATE updates the existing row that conflicts with the row proposed for insertion as its alternative action.WHERE позволяет дополнительно отфильтровать изменяемые записи, ведь не всегда речь идёт только об одной записи.
...
Рейтинг: 0 / 0
UPSERT - зачем здесь where?
    #39303099
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovРолг ХупинБез этого критерия у меня не апдейтится вся таблица, а только конфликтная запись
Апдейтится подмножество с таким же набором, как указано в конфликтеАпдейтяться те записи, которые вызвали конфликт: https://www.postgresql.org/docs/current/static/sql-insert.html#SQL-ON-CONFLICT ON CONFLICT DO UPDATE updates the existing row that conflicts with the row proposed for insertion as its alternative action.WHERE позволяет дополнительно отфильтровать изменяемые записи, ведь не всегда речь идёт только об одной записи.

согласен, но не вся таблица
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPSERT - зачем здесь where?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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