Re: UPDATE using sub selects

Поиск
Список
Период
Сортировка
От NikhilS
Тема Re: UPDATE using sub selects
Дата
Msg-id d3c4af540703160044r576e378ey5bc1eb91924e0de4@mail.gmail.com
обсуждение исходный текст
Ответ на Re: UPDATE using sub selects  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: UPDATE using sub selects  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Hi,

> What's the expected result if the tuple from subselect is more than 1?

Error, per SQL99 section 7.14:

         1) If the cardinality of a <row subquery> is greater than 1 (one),
            then an exception condition is raised: cardinality violation.
> I expect no update at all in case of void result set, is this the case ?

No, you get nulls; it's a subquery not a join.  Per SQL99 7.1:

            c) If the <row value constructor> is a <row subquery>, then:

              i) Let R be the result of the <row subquery> and let D be the
                 degree of R.

             ii) If the cardinality of R is 0 (zero), then the result of the
                 <row value constructor> is D null values.

            iii) If the cardinality of R is 1 (one), then the result of the
                 <row value constructor> is R.

                        regards, tom lane

To allow both of the above to hold, I think the subselect will have to be treated like a EXPR_SUBLINK subquery. I was wondering if we have a similar mechanism for plain selects/subselects to check and restrict their output to a single row.

Regards,
Nikhils
--
EnterpriseDB               http://www.enterprisedb.com

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

Предыдущее
От: Oleg Bartunov
Дата:
Сообщение: Re: tsearch_core for inclusion
Следующее
От: Teodor Sigaev
Дата:
Сообщение: Re: tsearch_core for inclusion