Thread: inheritence behavior question ....

inheritence behavior question ....

From
Date:
I did the following  which sounds illogical to me :
<snip>
test=> create table father (col1 integer not null unique);
NOTICE:  CREATE TABLE/UNIQUE will create implicit index 'father_col1_key'
for table 'father'
CREATE
test=> create table son (col2 integer) inherits (father);
CREATE
test=> insert into father (1);
ERROR:  parser: parse error at or near "1"
test=> insert into father values (1);
INSERT 19423 1
test=> insert into father values (2);
INSERT 19424 1
test=> insert into father values (3);
INSERT 19425 1
test=> insert into son values (1, 3);
INSERT 19426 1
test=> select  * from father;
 col1
------
    1
    2
    3
    1
(4 rows)

</snip>

Could some one explain why the last insert did not fail ?
I understand why it could work !
But I would still expect it to fail as the user requested to have the tabl
containing unique values and it obviously doesn't contain only uniques ..

Much tx,

thomas,


--
Thomas SMETS
rue J. Wytsmanstraat 62
1050 Bruxelles
yahoo-id : smetsthomas



Re: inheritence behavior question ....

From
"Cornelia Boenigk"
Date:
Hi Thomas

> Could some one explain why the last insert did not fail ?

Because you inserted into the table son;-)
 So why should it fail?

Greetings
Conni



Re: inheritence behavior question ....

From
Stephan Szabo
Date:
On Mon, 25 Mar 2002 tsmets@brutele.be wrote:

>
> I did the following  which sounds illogical to me :
> <snip>
> test=> create table father (col1 integer not null unique);
> NOTICE:  CREATE TABLE/UNIQUE will create implicit index 'father_col1_key'
> for table 'father'
> CREATE
> test=> create table son (col2 integer) inherits (father);
> CREATE

Currently primary keys, unique constraints and foreign keys do not
inherit to child tables.  There's also no current notion of unique
across the inheritance tree build in (you can probably kind of fake it
with an additional table and a bunch of rules, but...)

k


Re: inheritence behavior question ....

From
Date:
Nope what really bothers me is that I see the son's values while querying
the father !
That w/o specifying the father*
<snip>
test=> select  * from father;
 col1
------
    1
    2
    3
    1
(4 rows)
</snip>

I have absolutely no problem with the inserts in the son !
Dropping the constraints at Son's level sound weird to me but I can agree
with that w/o toomuch problem !

It's the query result that bothers me !

thomas,


--
Thomas SMETS
rue J. Wytsmanstraat 62
1050 Bruxelles
yahoo-id : smetsthomas
----- Original Message -----
From: "Cornelia Boenigk" <poppcorn@cornelia-boenigk.de>
To: "pgsql-general" <pgsql-general@postgresql.org>; <tsmets@brutele.be>
Sent: 25 March, 2002 4:12 AM
Subject: Re: [GENERAL] inheritence behavior question ....


Hi Thomas

> Could some one explain why the last insert did not fail ?

Because you inserted into the table son;-)
 So why should it fail?

Greetings
Conni






Re: inheritence behavior question ....

From
Oliver Elphick
Date:
On Mon, 2002-03-25 at 10:09, tsmets@brutele.be wrote:
>
> Nope what really bothers me is that I see the son's values while querying
> the father !
...

If you select on a parent table, you see all of its descendents as
well.  To see just the parent say "SELECT * FROM ONLY father".

--
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight                              http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C

     "Why are you downcast, O my soul? Why so disturbed
      within me? Put your hope in God, for I will yet praise
      Him, my Saviour and my God."       Psalm 42:11

Attachment