From: | "Juan Romero" <jgromero(at)gmail(dot)com> |
---|---|
To: | "Alvaro Herrera" <alvherre(at)alvh(dot)no-ip(dot)org> |
Cc: | "Lista Postgres ES" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: parámetro para utilizar con new |
Date: | 2008-10-23 21:52:11 |
Message-ID: | 3c7410400810231452u56a1cf44v2582b9f9d13df19a@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Disculpas Alvaro, te contesté solo a ti... ahora si a la lista
On Thu, Oct 23, 2008 at 4:02 PM, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> wrote:
> Juan Romero escribió:
>
>> 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;
>
> Huh ... ¿puedes por favor repetir en castellano qué se supone que hace
> eso de arriba? Yo creo que hay alguna manera mucho mejor de hacerlo.
Oooops! Mis disculpas por la ausencia de explicación.
Eso pone en pk el nombre del campo que es llave primaria de la tabla.
Yo también creo que debe haber una manera mucho mejor de hacerlo, pero
no supe cual :-S
>
>> --Quiero hacer algo como lo siguiente, pero evidentemente no se puede
>>
Cambiando:
>> INSERT INTO t3 (tabla, t_campo) VALUES (TG_TABLE_NAME, NEW.pk);
Por:
stmt := 'INSERT INTO auditoria (tabla, t_campo) VALUES
('||quote_literal(TG_TABLE_NAME) ||', NEW.'||pk||')';
EXECUTE stmt;
Sale como error:
ERROR: se usó NEW en una consulta que no es una regla
SQL state: 42601
Context: sentencia SQL: «INSERT INTO auditoria (tabla, t_codigo)
VALUES ('t2', NEW.t2_id)»
PL/pgSQL function "triggerprueba" line 13 at execute statement
stmt := 'INSERT INTO auditoria (tabla, t_campo) VALUES
('||quote_literal(TG_TABLE_NAME) ||', NEW.'||pk||')';
EXECUTE stmt;
Espero ahora si haberme explicado correctamente
Muchas gracias Jaime y Alvaro por la ayuda hasta ahora, y gracias por
adelantado por lo demás,
Juan Gabriel Romero Silva
From | Date | Subject | |
---|---|---|---|
Next Message | Juan Romero | 2008-10-23 23:27:00 | Re: parámetro para utilizar con new |
Previous Message | Javier Chávez B. | 2008-10-23 21:36:02 | Re: PGDay Rio de La Plata |