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