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/
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 |