UPDATE with AND clarification

Поиск
Список
Период
Сортировка
От Jamie Thompson
Тема UPDATE with AND clarification
Дата
Msg-id CABoe=cS68ZKuY09AUE92QuZbZG=UQozBL0m+nWQQ-oLFfDhfFA@mail.gmail.com
обсуждение исходный текст
Ответы Re: UPDATE with AND clarification  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-sql
Hi,

Struggled to find a section about this when scanning through the docs, but awkward keywords to scan for, so apologies for duplicating a request that has very likely come through before.

I'm aware a correct syntax for a multi column UPDATE is:
> UPDATE tablename SET col1 = val1, col2 = val2 WHERE id = X

Earlier today, I was running some sql for someone which they had submitted as:
> UPDATE tablename SET col1 = val1 AND col2 = val2 WHERE id = X

This returned UPDATE 1, but the row hadn't actually changed, col1 was still the old value.

Please could you explain what is actually happening here? Is there a section in the docs about this?
If I EXPLAIN (ANALYZE, VERBOSE) the update with the AND syntax, I can see the top level update node has 0 rows:
> Update on public.tablename (cost=11.91..24.87 rows=0 width=0) (actual time=1.377..1.378 rows=0 loops=1)
So why is it returning:
> UPDATE 1

Is it because it's only looking at col2 and in this scenario that value was already correct? What's it doing with the first column (col1) in the SET?

Thanks, hoping this can be clarified so I can help others avoid the mistake in future.

В списке pgsql-sql по дате отправления:

Предыдущее
От: intmail01
Дата:
Сообщение: How to choose table in SELECT clause without schema qualifier or 'set local'
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: How to choose table in SELECT clause without schema qualifier or 'set local'