Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group