Re: parámetro para utilizar con new

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 23:27:00
Message-ID: 3c7410400810231627i724f416egc753c3633232f081@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2008/10/23 Juan Romero <jgromero(at)gmail(dot)com>:
> 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
>

Respuesta:

"no, it's not possible in plpgsql. Please, use plperl or plpython."[1]

[1] http://archives.postgresql.org/pgsql-sql/2008-04/msg00034.php

Saludos,

Juan Gabriel Romero Silva

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ricardo Mendoza 2008-10-24 03:40:28 Re: Acerca de la traduccion...
Previous Message Juan Romero 2008-10-23 21:52:11 Re: parámetro para utilizar con new