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:17:15
Message-ID: BAY23-F17AB106812286D56878DE783B10@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!

_________________________________________________________________
Dale rienda suelta a tu tiempo libre. Mil ideas para exprimir tu ocio con
MSN Entretenimiento. http://entretenimiento.msn.es/

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message juan jose dominguez 2006-05-01 10:53:04 returned more than one row
Previous Message Alvaro Herrera 2006-05-01 02:12:43 Re: Problemas para pasar una base de un motor a otro