Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPSERT - зачем здесь where? / 6 сообщений из 6, страница 1 из 1
02.09.2016, 14:27
    #39302730
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPSERT - зачем здесь where?
здесь автор описывает пример апсерта
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
02.09.2016, 14:50
    #39302749
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPSERT - зачем здесь where?
Ролг Хупин,

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

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

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

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

Без этого критерия у меня не апдейтится вся таблица, а только конфликтная запись
Апдейтится подмножество с таким же набором, как указано в конфликте
...
Рейтинг: 0 / 0
02.09.2016, 23:12
    #39302999
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPSERT - зачем здесь where?
Ролг ХупинБез этого критерия у меня не апдейтится вся таблица, а только конфликтная запись
Апдейтится подмножество с таким же набором, как указано в конфликтеАпдейтяться те записи, которые вызвали конфликт: 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
03.09.2016, 12:31
    #39303099
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPSERT - зачем здесь where?
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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPSERT - зачем здесь where? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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