Re: (unknown)

From: Thomas Kellerer <spam_eater(at)gmx(dot)net>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: (unknown)
Date: 2015-01-27 13:31:45
Message-ID: ma8401$cqu$1@ger.gmane.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Oliver Dizon schrieb am 27.01.2015 um 11:46:
> I hope I'm in the right place to throw this. I just want to ask the reason behind this weird scenario.
>
> All records were deleted in a table even if the subquery in the where clause has a missing a column.
>
> --from a certain script where table_id is not yet existing on table_sample
>
> delete from main_table_sample where table_id in (select table_id from table_sample);
>
> Im expecting that postgres will return an ERROR message like
> 'column "table_id" does not exist on table table_sample'
>
> But it did not returned any error and deleted all the records instead.
>
> Version: psql (8.4.9, server 9.2.5)

No, this is correct and complies with the SQL standard. If you reference a column in a sub-select that is available in the outer query but not in the sub-select, then it's automatically a reference to the column from the outer query.

So in your query, the column "table_id" in the sub-query references the main_table_sample.table_id.

I agree this is confusing, but it's the way it was specified in the SQL standard.

Thomas

In response to

  • at 2015-01-27 10:46:13 from Oliver Dizon

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Magnus Hagander 2015-01-27 13:37:20 Re: sslmode verify-ca and verify-full: essentialy the same?
Previous Message David Guyot 2015-01-27 13:29:52 sslmode verify-ca and verify-full: essentialy the same?