Disculpas Alvaro, te contesté solo a ti... ahora si a la lista
On Thu, Oct 23, 2008 at 4:02 PM, Alvaro Herrera <[EMAIL PROTECTED]> 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 -- TIP 5: ¿Has leído nuestro extenso FAQ? http://www.postgresql.org/docs/faqs.FAQ.html