Re: unique amount more than one table

Поиск
Список
Период
Сортировка
От Rob Sargent
Тема Re: unique amount more than one table
Дата
Msg-id 4D9B9CC0.9060407@gmail.com
обсуждение исходный текст
Ответ на unique amount more than one table  (Perry Smith <pedzsan@gmail.com>)
Ответы Re: unique amount more than one table  (Perry Smith <pedzsan@gmail.com>)
Список pgsql-general

On 04/05/2011 04:02 PM, Perry Smith wrote:
> I have five tables each with a "name" field.  Due to limitations in my user interface, I want a name to be unique
amoungthese five tables. 
>
> I thought I could first create a view with something like:
>
> SELECT name, 'table1' as type from table1
>    UNION ALL
> SELECT name, 'table2' as type from table2
>    UNION ALL
> SELECT name, 'table3' as type from table3
>   ...
>
> I called this view xxx (I'm just experimenting right now).
>
> I then created a function:
>
> CREATE OR REPLACE FUNCTION unique_xxx ( ) RETURNS boolean AS $$
>         SELECT ( SELECT max(cnt) FROM ( SELECT count(*) AS cnt FROM xxx GROUP BY name ) AS foo ) = 1;
> $$ LANGUAGE SQL;
>
> Next I added a check constraint with:
>
> ALTER TABLE table1 ADD CHECK ( unique_xxx() );
>
> A test shows:
>
> select unique_xxx();
>   unique_xxx
> ------------
>   t
> (1 row)
>
> After I insert a row that I want to be rejected, I can do:
>
> select unique_xxx();
>   unique_xxx
> ------------
>   f
> (1 row)
>
> but the insert was not rejected.  I'm guessing because the check constraint runs before the insert?  So, I could
changemy approach and have my unique_xxx function see if the name to be added is already in the xxx view but it is at
thatpoint that I stopped and thought I would ask for advice.  Am I close or am I going down the wrong road? 
>
> Thank you for your time,
> pedz
>
>

You might try making a separate name table and having a unique index
there and make the other users of name refer to the new table's name
field.  (I would stick on id on the new name table...)

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

Предыдущее
От: Jeremy Palmer
Дата:
Сообщение: Re: Out of memory
Следующее
От: Greg Corradini
Дата:
Сообщение: Dumping functions with pg_dump