Función que no va. Novato en plpgsql

From: Pablo Braulio <brulics(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Función que no va. Novato en plpgsql
Date: 2006-05-20 11:06:12
Message-ID: 200605201306.12543.brulics@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos.

Estoy empezando a meterme con las funciones y triggers y como era de esperar
la primera ha fallado.

Lo que trato de hacer es que al insertarse un registro nuevo en la tabla
FICHEROS, se haga un INSERT a otra tabla ESTRUCT_FICHEROS. Cogiendo el campo
id de la primera tabla e insertandola en la segunda.

Esta es la estructura de las tablas:

\d ficheros
Tabla «public.ficheros»
Columna | Tipo | Modificadores
-------------+-----------------------+-------------------------------------------------------
id | integer | not null default
nextval('ficheros_id_seq'::regclass)
empresa | integer | not null
fichero | character varying(15) | not null
......
«ficheros_pkey» PRIMARY KEY, btree (id)
«rgpd_idx» btree (rgpd)
Restricciones de llave foránea:
«ficheros_empresa_fkey» FOREIGN KEY (empresa) REFERENCES empresas(id) ON
UPDATE CASCADE ON DELETE CASCADE

\d estruct_ficheros
Tabla «public.estruct_ficheros»
Columna | Tipo | Modificadores
-------------------+---------+---------------------------------------------------------------
id | integer | not null default
nextval('estruct_ficheros_id_seq'::regclass)
fichero | integer | not null
....

Restricciones de llave foránea:
«estruct_ficheros_fichero_fkey» FOREIGN KEY (fichero) REFERENCES
ficheros(id) ON UPDATE CASCADE ON DELETE CASCADE

Siguiendo el manual he hecho esta función.

CREATE OR REPLACE FUNCTION estructura_fichero() returns trigger as $$
begin
IF('TP_OP' = "INSERT") THEN
INSERT INTO ESTRUCT_FICHEROS(FICHERO) VALUES ('NEW.id');
RETURN NEW;
END IF;
END;
$$ language 'plpgsql';

CREATE TRIGGER estructura_fich AFTER INSERT ON FICHEROS FOR EACH ROW EXECUTE
PROCEDURE estructura_fichero();

Pero me muestra el siguiente error al hacer un insert a FICHEROS:

Query failed: ERROR: no existe la columna «tp_op» CONTEXT: sentencia
SQL: «SELECT (TP_OP = "INSERT")» PL/pgSQL function "estructura_fichero"

Soy muy inexperto en las funciones.

Espero me podáis ayudar.

Gracias.

--
Saludos.
Pablo.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fernando Aguada 2006-05-20 11:29:17 Sobre autovacuum
Previous Message Paolo Lopez 2006-05-20 07:51:01 Consulta sobre Postgres ante escenarios de caidas