Re: DELETE syntax on JOINS

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: DELETE syntax on JOINS
Дата
Msg-id 200908242129.n7OLT0921084@momjian.us
обсуждение исходный текст
Ответ на Re: DELETE syntax on JOINS  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: DELETE syntax on JOINS
Re: DELETE syntax on JOINS
Список pgsql-hackers
Tom Lane wrote:
> Alvaro Herrera <alvherre@commandprompt.com> writes:
> > Bruce Momjian wrote:
> >> So the problem is that our DELETE ... USING does not allow ANSI join
> >> syntax?  Can that be added?
> 
> > Not sure about that.  USING is already an extension to the standard, so
> > if we extend it a bit more, it can't be a problem, can it?
> 
> I don't see any very good way to extend the USING syntax to allow the
> target table to be outer-joined to something else.  Some other systems
> allow it by letting you re-specify the target in the other clause,
> equivalently to
> 
> DELETE FROM target t USING t LEFT JOIN other_table ot ON ...
> 
> but we have always considered that the target is *not* to be identified
> with any member of the FROM/USING clause, so it would be a serious
> compatibility break to change that now.

Let's look at this a little closer.  We can use an alias in the DELETE
FROM clause:
test=> DELETE FROM test t;test=> DELETE FROM test t USING test;

What we cannot currently do is reference test twice:
test=> DELETE FROM test USING test;ERROR:  table name "test" specified more than oncetest=> DELETE FROM test t USING
testt;ERROR:  table name "t" specified more than once
 

As far as I understand it, allowing ANSI joins in USING would simple
mean removing that error message and linking the two table aliases.

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


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

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: 8.5 release timetable, again
Следующее
От: Rick Vernam
Дата:
Сообщение: Re: 8.5 release timetable, again