Thread: Trigger on 'create table' ?

Trigger on 'create table' ?

From
"Bruce David"
Date:
All,

I'm trying to implement row level security using PostgreSQL.  I envision
having column on each and every table in the database that will contain a
discriminating value that determines if a given user is able to see that row
or not.  Users do not directly access the database; they get at it only
through client applications.

Is there a way to initially configure PostgreSQL such that each and every
time a 'create table foo....' command is executed that, something else would
happen instead?

For example,

CREATE TABLE weather (
    city        varchar(80),
    lo        int,
    hi        int,
    prcp    real,
    date    date
);

would result in the following being executed automatically:

CREATE TABLE t_weather (
    city        varchar(80),
    lo        int,
    hi        int,
    prcp    real,
    date    date,
    hidden_column    int
);

CREATE VIEW weather AS
    SELECT city, lo, hi, prcp, date
    FROM t_weather;


How the view gets populated is another discussion entirely.

But is there a way to set things up initially such that each 'create table'
command will exhibit the behavior described above?

Thanks.

--

Bruce




Re: Trigger on 'create table' ?

From
Medi Montaseri
Date:
Perhaps you can define a base class (table) and let others inherit from it.

Bruce David wrote:

>All,
>
>I'm trying to implement row level security using PostgreSQL.  I envision
>having column on each and every table in the database that will contain a
>discriminating value that determines if a given user is able to see that row
>or not.  Users do not directly access the database; they get at it only
>through client applications.
>
>Is there a way to initially configure PostgreSQL such that each and every
>time a 'create table foo....' command is executed that, something else would
>happen instead?
>
>For example,
>
>CREATE TABLE weather (
>    city        varchar(80),
>    lo        int,
>    hi        int,
>    prcp    real,
>    date    date
>);
>
>would result in the following being executed automatically:
>
>CREATE TABLE t_weather (
>    city        varchar(80),
>    lo        int,
>    hi        int,
>    prcp    real,
>    date    date,
>    hidden_column    int
>);
>
>CREATE VIEW weather AS
>    SELECT city, lo, hi, prcp, date
>    FROM t_weather;
>
>
>How the view gets populated is another discussion entirely.
>
>But is there a way to set things up initially such that each 'create table'
>command will exhibit the behavior described above?
>
>Thanks.
>
>--
>
>Bruce
>
>
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 4: Don't 'kill -9' the postmaster
>
>