Re: There can be only one
От | Andreas Kretschmer |
---|---|
Тема | Re: There can be only one |
Дата | |
Msg-id | 02B841CE-A594-4210-9C0C-45C4CFF7E571@a-kretschmer.de обсуждение исходный текст |
Ответ на | There can be only one (Jason Dusek <jason.dusek@gmail.com>) |
Ответы |
Re: There can be only one
|
Список | pgsql-general |
Create a partial unique index on is_default.
--
Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.
Am 11. Oktober 2015 09:41:08 MESZ, schrieb Jason Dusek <jason.dusek@gmail.com>:
Consider a table of providers, for which one is the default. For example, payment providers:
CREATE TABLE payment_via ( id uuid PRIMARY KEY, provider text NOT NULL, keys hstore NOT NULL DEFAULT '' );
Here we store together the name of the provider —
medici
,paypal
— with access tokens needed to use a certain payment account. How shall we store which one is the default? Ideally, we’d be able to ensure there is but one default.
CREATE TABLE payment_via ( id uuid PRIMARY KEY, provider text NOT NULL, keys hstore NOT NULL DEFAULT '', is_default boolean NOT NULL DEFAULT FALSE );
How shall we state the constraint? The obvious thing would seem to be:
CREATE TABLE payment_via ( id uuid PRIMARY KEY, provider text NOT NULL, keys hstore NOT NULL DEFAULT '', is_default boolean NOT NULL DEFAULT FALSE, EXCLUDE (is_default USING AND) );
However, this is a syntax error. There is always:
CREATE TABLE payment_via ( id uuid PRIMARY KEY, provider text NOT NULL, keys hstore NOT NULL DEFAULT '', is_default boolean NOT NULL DEFAULT FALSE, EXCLUDE (is_default USING =) WHERE (is_default) );
but this seems awkward and I was hoping there was some way to use
AND
as an operator.
--
Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.
В списке pgsql-general по дате отправления: