Re: limit table to one row

Поиск
Список
Период
Сортировка
От Niklas Johansson
Тема Re: limit table to one row
Дата
Msg-id F31071A3-6CDD-46B5-83AC-93C777BD16E0@codecraft.se
обсуждение исходный текст
Ответ на Re: limit table to one row  (Richard Broersma <richard.broersma@gmail.com>)
Ответы Re: limit table to one row  (Brandon Metcalf <brandon@geronimoalloys.com>)
Список pgsql-general
On 4 jun 2009, at 22.17, Richard Broersma wrote:

> On Thu, Jun 4, 2009 at 1:13 PM, Brandon Metcalf
> <brandon@geronimoalloys.com> wrote:
>> Is there a way when creating a table to limit it to one row?  That
>> is,
>> without using a stored procedure?
>
>
> Sure just add a check constraint along the lines of:
>
> CONSTRAINT Only_one_row
>     CHECK( tableuniqueid = 1 ); --assuming you row has a unique id
> of 1

Another way, which I've used a couple of times, is to use the rule
system:

CREATE TABLE single_row (value text);
INSERT INTO single_row VALUES ('value');
CREATE RULE no_insert AS ON INSERT TO single_row DO INSTEAD NOTHING;
CREATE RULE no_delete AS ON DELETE TO single_row DO INSTEAD NOTHING;

This way, the table must have exactly one row. I believe the
constraint check would still allow the row to be deleted, which you
may or may not want.

If you want an error to be raised when inserting or deleting, you'd
have to call a function raising the error in the rule. A minor
drawback is that the table still isn't safe from TRUNCATE though.


Sincerely,

Niklas Johansson




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

Предыдущее
От: Oliver Kohll - Mailing Lists
Дата:
Сообщение: Re: Division by zero
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: Accessing pg_controldata information from SQL