From: | "Juan Romero" <jgromero(at)gmail(dot)com> |
---|---|
To: | "Lista Postgres ES" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | parámetro para utilizar con new |
Date: | 2008-10-23 20:52:36 |
Message-ID: | 3c7410400810231352j6e6a1169nc695173f4351dd7f@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola lista,
Estaba escribiendo un trigger y me encontré con la necesidad de buscar
en los catálogos para tras buscar el nombre de un campo de la tabla
tomar ese valor y usarlo en otra. Algo parecido a:
CREATE OR REPLACE FUNCTION triggerprueba()
RETURNS trigger AS
$BODY$
DECLARE
pk text;
BEGIN
SELECT substring(pg_catalog.pg_get_indexdef(i.indexrelid, 0, true)
from position('btree (' IN pg_catalog.pg_get_indexdef(i.indexrelid,
0, true)) + 7
for position(')' IN pg_catalog.pg_get_indexdef(i.indexrelid, 0, true)) -
(position('btree (' IN pg_catalog.pg_get_indexdef(i.indexrelid, 0,
true)) + 7))
FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i
WHERE c.oid = TG_RELID AND c.oid = i.indrelid AND i.indexrelid = c2.oid
AND i.indisprimary = true INTO pk;
--Quiero hacer algo como lo siguiente, pero evidentemente no se puede
INSERT INTO t3 (tabla, t_campo) VALUES (TG_TABLE_NAME, NEW.pk);
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
Me pareció haber visto algo parecido hace algún tiempo en la lista,
pero no lo encontré..... Por lo que entiendo esto no se podría hacer
de este modo, (al menos no con plpgsql) pero quisiera estar seguro.
Cordial Saludo,
Juan Gabriel Romero Silva
From | Date | Subject | |
---|---|---|---|
Next Message | Jaime Casanova | 2008-10-23 20:57:29 | Re: parámetro para utilizar con new |
Previous Message | Edwin Quijada | 2008-10-23 19:31:29 | RE: Retornando un select ...diferencias de Postgres y MSSQL |