RE: Variable constants ?

Поиск
Список
Период
Сортировка
От Igor Neyman
Тема RE: Variable constants ?
Дата
Msg-id BN6PR1701MB18904F80BF6122475DF96694DAAC0@BN6PR1701MB1890.namprd17.prod.outlook.com
обсуждение исходный текст
Ответ на Re: Variable constants ?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
-----Original Message-----
From: Tom Lane <tgl@sss.pgh.pa.us>
Sent: Thursday, August 15, 2019 6:13 PM
To: stan <stanb@panix.com>
Cc: pgsql-general@postgresql.org
Subject: Re: Variable constants ?

stan <stanb@panix.com> writes:
> Failing a better way is there some way I can limit this table to only
> allow one row to exist?

I was recently reminded of a cute trick for that: make a unique index on a constant.

regression=# create table consts(f1 int, f2 int); CREATE TABLE regression=# create unique index consts_only_one on
consts((1));CREATE INDEX regression=# insert into consts values(1,2); INSERT 0 1 regression=# insert into consts
values(3,4);
ERROR:  duplicate key value violates unique constraint "consts_only_one"
DETAIL:  Key ((1))=(1) already exists.

Shepard's nearby advice about keeping some history is probably a better plan though.

                        regards, tom lane
____________________________________________________________________________

Here is another trick to keep a table to just one row:

reg#create table test(c1 int check(c1=1) default 1, c2 int);
CREATE TABLE
reg#create unique index one_row on test(c1);
CREATE INDEX
reg#insert into test (c2) values(3);
INSERT 01
reg# insert into test (c2) values(4);
ERROR:  duplicate key value violates unique constraint "one_row"
DETAIL:  Key (c1)=(1) already exists.
SQL state: 23505

Regards,
Igor Neyman




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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Variable constants ?
Следующее
От: Gavin Flower
Дата:
Сообщение: Re: Error XX000 After pg11 upgrade