From: | Tim Cross <theophilusx(at)gmail(dot)com> |
---|---|
To: | Jeremy Finzel <finzelj(at)gmail(dot)com> |
Cc: | Postgres General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Enforce primary key on every table during dev? |
Date: | 2018-02-28 21:07:43 |
Message-ID: | 87vaegq0v4.fsf@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Jeremy Finzel <finzelj(at)gmail(dot)com> writes:
> We want to enforce a policy, partly just to protect those who might forget,
> for every table in a particular schema to have a primary key. This can't
> be done with event triggers as far as I can see, because it is quite
> legitimate to do:
>
> BEGIN;
> CREATE TABLE foo (id int);
> ALTER TABLE foo ADD PRIMARY KEY (id);
> COMMIT;
>
> It would be nice to have some kind of "deferrable event trigger" or some
> way to enforce that no transaction commits which added a table without a
> primary key.
>
I think you would be better off having an automated report which alerts
you to tables lacking a primary key and deal with that policy through
other means. Using triggers in this way often leads to unexpected
behaviour and difficult to identify bugs. The policy is a management
policy and probably should be dealt with via management channels rather
than technical ones. Besides, the likely outcome will be your developers
will just adopt the practice of adding a serial column to every table,
which in itself doesn't really add any value.
Tim
--
Tim Cross
From | Date | Subject | |
---|---|---|---|
Next Message | chris | 2018-02-28 21:15:27 | Re: selecting timestamp |
Previous Message | Charles Clavadetscher | 2018-02-28 21:00:57 | Re: How to avoid trailing zero (after decimal point) for numeric type column |