Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

leer 1er campo de una tabla sin saber su nombre

Estas en el tema de leer 1er campo de una tabla sin saber su nombre en el foro de PostgreSQL en Foros del Web. Saludos ¿Alguna forma de leer el registro de un campo (el primero de una tabla) sin saber su nombre? En realidad sí conozco el nombre, ...
  #1 (permalink)  
Antiguo 25/02/2009, 08:39
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 2 meses
Puntos: 7
leer 1er campo de una tabla sin saber su nombre

Saludos

¿Alguna forma de leer el registro de un campo (el primero de una tabla) sin saber su nombre?

En realidad sí conozco el nombre, pero para auditar la tabla en una función, el nombre varía de una tabla a otra, por eso puede ser interesante leer el primer campo de la tabla...

Gracias
__________________
Gracias de todas todas
-----
Linux!
  #2 (permalink)  
Antiguo 25/02/2009, 09:21
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: leer 1er campo de una tabla sin saber su nombre

Creo que no se puede..
Pero tienes razón... sería muy interesante.
  #3 (permalink)  
Antiguo 26/02/2009, 12:13
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: leer 1er campo de una tabla sin saber su nombre

Si que se puede, utilizando el catalogo de la BD.

Código:
select column_name 
from information_schema.columns 
where table_name = 'TABLA'
 and ordinal_position = 1;
salu2
  #4 (permalink)  
Antiguo 26/02/2009, 12:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: leer 1er campo de una tabla sin saber su nombre

Excelente.
  #5 (permalink)  
Antiguo 27/02/2009, 10:52
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 2 meses
Puntos: 7
Respuesta: leer 1er campo de una tabla sin saber su nombre

Gracias amigo Seyko!

Sabía que se podía pero nor ecordaba por dónde iban los tiros!

Al terminar lo que estoy haciendo, lo comparto... apuesto (y creo que no pierdo) a que me dicen que reinventé la rueda, pero bue...
__________________
Gracias de todas todas
-----
Linux!
  #6 (permalink)  
Antiguo 27/02/2009, 12:30
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 2 meses
Puntos: 7
Respuesta: leer 1er campo de una tabla sin saber su nombre

Nada, intentos muy cortos...

Lo que intento es hacer un sistema de auditoria, que me permita guardar en una tabla el campo que se está modificando, la tabla, el tipo de operación. donde estos últimos los tomo con: TG_RELNAME y TG_OP respectivamente.

El script, proveniente de un dump completo, por sí alguien quiere probar... y ayudar:
Código:
--
-- PostgreSQL database dump
--

SET client_encoding = 'UTF8';
SET check_function_bodies = false;
SET client_min_messages = warning;

--
-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: postgres
--

COMMENT ON SCHEMA public IS 'Standard public schema';

--
-- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner:
--

CREATE PROCEDURAL LANGUAGE plpgsql;

SET search_path = public, pg_catalog;

--
-- Name: auditoria(); Type: FUNCTION; Schema: public; Owner: carbonara
--

CREATE FUNCTION auditoria() RETURNS "trigger"
    AS $$
    DECLARE
        tabla integer;

BEGIN
    tabla := column_name FROM information_schema.columns WHERE table_name = TG_RELNAME AND ordinal_position = 1;
    IF (TG_OP = 'DELETE') THEN
            INSERT INTO auditor (id, op, tbl) VALUES (OLD.tabla,TG_OP,TG_RELNAME);
            RETURN OLD;
        ELSIF (TG_OP = 'UPDATE') THEN
            INSERT INTO auditor (id, op, tbl) VALUES (NEW.tabla,TG_OP,TG_RELNAME);
            RETURN NEW;
        ELSIF (TG_OP = 'INSERT') THEN
            INSERT INTO auditor (id, op, tbl) VALUES (NEW.tabla,TG_OP,TG_RELNAME);
            RETURN NEW;
        END IF;
END;

$$
    LANGUAGE plpgsql;


ALTER FUNCTION public.auditoria() OWNER TO carbonara;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: apellidos; Type: TABLE; Schema: public; Owner: carbonara; Tablespace:
--

CREATE TABLE apellidos (
    apellidos_id serial NOT NULL,
    apellido1 character varying(20),
    apellido2 character varying(20)
);

ALTER TABLE public.apellidos OWNER TO carbonara;

--
-- Name: auditor; Type: TABLE; Schema: public; Owner: carbonara; Tablespace:
--

CREATE TABLE auditor (
    id integer,
    op text,
    fecha timestamp without time zone DEFAULT now(),
    tbl character varying
);

ALTER TABLE public.auditor OWNER TO carbonara;

--
-- Name: audit; Type: TRIGGER; Schema: public; Owner: carbonara
--

CREATE TRIGGER audit
    AFTER INSERT OR DELETE OR UPDATE ON apellidos
    FOR EACH ROW
    EXECUTE PROCEDURE auditoria();

--
-- Name: public; Type: ACL; Schema: -; Owner: postgres
--

REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO PUBLIC;

--
-- PostgreSQL database dump complete
--
__________________
Gracias de todas todas
-----
Linux!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:56.