Re: Enforce primary key on every table during dev?

Поиск
Список
Период
Сортировка
От Melvin Davidson
Тема Re: Enforce primary key on every table during dev?
Дата
Msg-id CANu8Fix7pOzQ8Bjpzgiyw8yZgrJ9Zc95g9p=kQFYqAOFCf5jzw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Enforce primary key on every table during dev?  (Tim Cross <theophilusx@gmail.com>)
Ответы Re: Enforce primary key on every table during dev?
Re: Enforce primary key on every table during dev?
Список pgsql-general


On Wed, Feb 28, 2018 at 4:07 PM, Tim Cross <theophilusx@gmail.com> wrote:

Jeremy Finzel <finzelj@gmail.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


> 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.

Perhaps a better solution is to have a meeting with the developers and explain to them
WHY the policy of enforcing a primary key is important. Also, explain the purpose of
primary keys and why it is not always suitable to just use an integer or serial as the key,
but rather why natural unique (even multi column) keys are better. But this begs the question,
why are "developers" allowed to design database tables? That should be the job of the DBA! At
the very minimum, the DBA should be reviewing and have the authority to approve of disapprove
of table/schema designs/changes .


--
Melvin Davidson
Maj. Database & Exploration Specialist

Universe Exploration Command – UXC

Employment by invitation only!

В списке pgsql-general по дате отправления:

Предыдущее
От: "btober@computer.org"
Дата:
Сообщение: Re: Enforce primary key on every table during dev?
Следующее
От: Alban Hertroys
Дата:
Сообщение: Re: Enforce primary key on every table during dev?