Re: howto create dynamic table name in plpgsql function.

From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: "Thies C(dot) Arntzen" <thies(at)thieso(dot)net>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: howto create dynamic table name in plpgsql function.
Date: 2005-11-25 20:37:10
Message-ID: c2d9e70e0511251237t6d768c28r5b151369f64fc6de@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 11/25/05, Thies C. Arntzen <thies(at)thieso(dot)net> wrote:
> hello,
>
> i have a table with documents that have an id and belong to a pool:
> (the sample tables have no indices, i know)
>
>
> Table "public.asset"
> Column | Type | Modifiers
> ----------+---------+-----------
> asset_id | integer |
> pool_id | integer |
> content | text |
>
> each pool belongs to a customer:
> Table "public.pool"
> Column | Type | Modifiers
> -------------+---------+-----------
> pool_id | integer |
> customer_id | integer |
>
> now, for speed reasons i want to create one tsearch2 index per customer.
>
> Table "public.ftx_1"
> Column | Type | Modifiers
> ----------------+----------+-----------
> asset_id | integer |
> content_vector | tsvector |
>
> i have one ftx_<customer_id> tabe per customer
>
> so i wrote a trigger:
>
> drop function update_ftx() cascade;
>
> CREATE FUNCTION update_ftx()
> RETURNS TRIGGER
> AS '
> DECLARE
> cid integer;
> BEGIN
> SELECT INTO cid customer_id FROM pool WHERE pool_id = NEW.pool_id;
> IF NOT FOUND THEN
> RAISE EXCEPTION ''Invalid pool.'';
> END IF;
>
> insert into ftx values (NEW.asset_id, to_tsvector(NEW.content));
>
> -- this it where my knowledge ends;-)
> -- i want to say something like
> -- insert into ftx_||cid values (NEW.asset_id, to_tsvector
> (NEW.content));
> -- to insert into ftx_<customer_id>
>

execute 'insert into ftx_' || ' cid || ' values (' || NEW.asset_id || ', '
|| '
to_tsvector (' || NEW.content || ' ));';

> RETURN new;
> END;'
> LANGUAGE 'plpgsql';
>
> CREATE TRIGGER update_ftx BEFORE UPDATE OR INSERT ON asset FOR EACH
> ROW EXECUTE PROCEDURE update_ftx();
>
> but i can't get the insert to work as i don't know the syntax..
>
> any help would be greatly appreciated!
> ..tc
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
>

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Michael Fuhr 2005-11-26 02:36:38 Re: Function name variable within a non-trigger function
Previous Message Thies C. Arntzen 2005-11-25 20:23:33 howto create dynamic table name in plpgsql function.