returned more than one row

From: "juan jose dominguez" <preguntas_sql(at)hotmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: returned more than one row
Date: 2006-05-01 10:53:04
Message-ID: BAY23-F16B533F9238ED660E627A983B10@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenas tengo las siguientes tablas:

--DROP TABLE codigos_provincia;

CREATE TABLE codigos_provincia
(
codigo numeric NOT NULL,
provincia char(25)
) ;

INSERT INTO codigos_provincia VALUES (01,'Álava');
INSERT INTO codigos_provincia VALUES (02,'Albacete');
INSERT INTO codigos_provincia VALUES (03,'Alicante');
...

Y:

DROP TRIGGER trigger_comprueba_cp ON mitabla;
DROP FUNCTION comprueba_cp () ;

CREATE FUNCTION comprueba_cp () RETURNS OPAQUE AS'
DECLARE
n_aux NUMERIC;
BEGIN
IF (NEW.micodigo) ISNULL THEN RAISE EXCEPTION ''El código no puede ser
nulo'';
END IF;

IF (NEW.miprovincia) ISNULL THEN RAISE EXCEPTION ''La provincia no puede ser
nula'';
END IF;

n_aux := n_aux / 1000;

SELECT codigos_provincia.codigo INTO n_aux FROM codigos_provincia WHERE
NEW.miprovincia = codigos_provincia.provincia;
IF (n_aux = codigos_provincia.codigo) THEN RAISE NOTICE ''Codigo postal %
corresponde a la provincia %'', NEW.micodigo, NEW.miprovincia;
ELSE RAISE EXCEPTION ''Codigo postal % NO corresponde a la provincia %'',
NEW.micodigo, NEW.miprovincia;
END IF;

RETURN NEW;
END;
'LANGUAGE 'plpgsql';

CREATE TRIGGER trigger_comprueba_cp BEFORE INSERT OR UPDATE ON mitabla
FOR EACH ROW EXECUTE PROCEDURE comprueba_cp ();

Y me da el siguiente error al insertar:
INSERT INTO mitabla VALUES (28080, 'Madrid', 'Juan');

ERROR: query "SELECT ( $1 = codigos_provincia.codigo)" returned more than
one row
CONTEXT: PL/pgSQL function "comprueba_cp" line 13 at if

Tiene que comprobar que el codigo que inserto se corresponde con la
provincia, pero solo hay un codigo para cada provincia, el select solo
devuelve una celda... que puedo hacer?

GRACIAS!

_________________________________________________________________
Moda para esta temporada. Ponte al día de todas las tendencias.
http://www.msn.es/Mujer/moda/default.asp

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miguel Juan 2006-05-01 13:36:33 Re: Problemas para pasar una base de un motor a otro
Previous Message juan jose dominguez 2006-05-01 10:17:15 returned more than one row