Re: How to use search_path in CASE

Поиск
Список
Период
Сортировка
От Lennart Ripke
Тема Re: How to use search_path in CASE
Дата
Msg-id 43B631B7D85C9041AE58B7834DFF6A751F2299@server.Auto.local
обсуждение исходный текст
Ответ на Re: How to use search_path in CASE  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: How to use search_path in CASE  ("A. Kretschmer" <andreas.kretschmer@schollglas.com>)
Список pgsql-novice
Hello Tom,

If I rethink schema design I'm concerned about performance: There will be about 100thousand lines in each foo table. I
hopedperformance will be better with separate tables rather than a single one. Do you have any suggestions/experience
onthis? 

Best regards, Lennart


-----Ursprüngliche Nachricht-----
Von: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Gesendet: Freitag, 2. Juli 2010 08:25
An: Lennart Ripke
Cc: pgsql-novice@postgresql.org
Betreff: Re: [NOVICE] How to use search_path in CASE

"Lennart Ripke" <l.ripke@automationwr.de> writes:
> I have a database with 6 schemas (named schema1 to schema6), each
> contains a table 'foo'. I want to insert testvalues into these tables
> using a plpgsql function.

> I learned you can't use SET search_path  (or SET LOCAL) in a CASE
> structure because the function is using the current search path , which
> does only change at session scope.

> But how to accomplish this task?

1. Rethink that schema design.  It seems pretty poorly chosen.
A rule of thumb is that N identical tables should be replaced by
1 table with one more primary-key column.  A design with N identical
tables in N schemas might make sense if you typically only need to
access one schema at a time, but that isn't your requirement.

or...

2. Do something like

   CASE s
     WHEN 1 THEN
       INSERT INTO schema1.foo ...
     WHEN 2 THEN
       INSERT INTO schema2.foo ...
     etc

            regards, tom lane




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

Предыдущее
От: "A. Kretschmer"
Дата:
Сообщение: Re: How to use search_path in CASE
Следующее
От: "A. Kretschmer"
Дата:
Сообщение: Re: How to use search_path in CASE