Inheritance: delete parent deletes children - Mailing list pgsql-general

From google.clp@alma.ch (M. I.)
Subject Inheritance: delete parent deletes children
Date
Msg-id e6bd366.0210020251.1b0f3971@posting.google.com
Whole thread Raw
Responses Re: Inheritance: delete parent deletes children  (Stephan Szabo <sszabo@megazone23.bigpanda.com>)
List pgsql-general
Hello,

I'm using inheritance in a way that may be wrong and would appreciate
comments.

In several tables, I want to have record creation and modification
times and user names.

So instead of repeating theses fields in all table definitions, I
created a logging table, which the others inherit:

CREATE TABLE "logging" (
        "log_ct" timestamp(0) without time zone DEFAULT now(),
        "log_mt" timestamp(0) without time zone DEFAULT now(),
        "log_cu" character varying(20) DEFAULT "current_user"(),
        "log_mu" character varying(20) DEFAULT "current_user"()
);

And then other tables like
CREATE TABLE some_table ( ... ) INHERITS (logging);

Fine, I have the logging fields in all other tables.

But I just realized that things actually go into that "logging" table,
not into the child tables. I wonder how the database knows which row
in logging is related to which row in a child table.

Also, I noticed that if I delete a record in the parent table, the
child is also deleted!! This sounds bad!

Is it just a bad idea to use inheritance for this (should I simply
repeat the fields in the definitions of all tables that need them?),
or is there just a detail I should correct? Or is that all fine as
long as I don't accidentally delete records in the parent table?

Thank you for your comments.

Mi

pgsql-general by date:

Previous
From: Hans-Jürgen Schönig
Date:
Subject: Re: [HACKERS] Large databases, performance
Next
From: "Michael Paesold"
Date:
Subject: Re: [HACKERS] Anyone want to assist with the translationof the Advocacy