Re: Question Regarding DELETE FROM ONLY

From: Terry Lee Tucker <terry(at)esc1(dot)com>
To: Michael Fuhr <mike(at)fuhr(dot)org>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Question Regarding DELETE FROM ONLY
Date: 2006-05-29 14:20:04
Message-ID: 200605291020.04290.terry@esc1.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Monday 29 May 2006 09:43 am, Michael Fuhr <mike(at)fuhr(dot)org> thus
communicated:
--> On Mon, May 29, 2006 at 08:40:43AM -0400, Terry Lee Tucker wrote:
--> > INSERT INTO ctable (code, name) VALUES ('code_one', 'Code One');
--> > rnd=# SELECT * FROM ptable;
--> > code
--> > ----------
--> > code_one
--> > (1 row)
--> >
--> > rnd=# SELECT * FROM ctable;
--> > code | name
--> > ---------------+----------
--> > code_one | Code One
--> > (1 row)
-->
--> These aren't two distinct records -- they're the same record, the
--> one in ctable, as the following queries show:
-->
--> SELECT tableoid::regclass, * FROM ptable;
--> SELECT tableoid::regclass, * FROM ctable;
-->
--> You can use FROM ONLY to see that the record doesn't actually exist
--> in ptable:
-->
--> SELECT tableoid::regclass, * FROM ONLY ptable;
-->
--> > DELETE FROM ONLY ctable WHERE code ~* 'code_one';
--> >
--> > rnd=# SELECT * FROM ptable;
--> > code
--> > ------
--> > (0 rows)
--> >
--> > The record in ctable AND the record in ptable are both deleted even
though I --> > specified "ONLY ctable" in the delete phrase. Why is this
happening? -->
--> Because there was only one record, the one in ctable, and you deleted
--> it. When you inserted the record into ctable that's the only place
--> it went. The query against ptable showed records in the parent
--> table (none) and records in its child tables (one). After you
--> delete the record from the child the subsequent query against the
--> parent returns zero rows because both tables are now empty (the
--> parent was always empty and the child had its one record deleted).
-->
--> --
--> Michael Fuhr
-->

Thanks for the response Michael. I'm beginning to see the light.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2006-05-29 14:20:33 Re: The server's LC_CTYPE locale
Previous Message Bruce Momjian 2006-05-29 13:57:48 Re: no prompt in psql!!!