From: | Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar> |
---|---|
To: | juan jose dominguez <preguntas_sql(at)hotmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: returned more than one row |
Date: | 2006-05-01 15:59:37 |
Message-ID: | cabd65bb2e74daebac12c56c26c57db5@localhost |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Mon, 01 May 2006 12:17:15 +0200, "juan jose dominguez" <preguntas_sql(at)hotmail(dot)com> wrote:
>
> CREATE TABLE codigos_provincia
> (
> codigo numeric NOT NULL,
> provincia char(25)
> ) ;
Te recomendaria colocar un PRIMARY KEY a la tabla (mas aun, a todas las tablas).
> CREATE FUNCTION comprueba_cp () RETURNS OPAQUE AS'
Si es una funcion de trigger, hace que devuelva tipo de dato TRIGGER:
CREATE FUNCTION comprueba_cp () RETURNS TRIGGER 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;
Esto no lo entiendo. A esta altura n_aux no esta definida, por lo tanto cual es la gracia de hacer una operacion matematica con ella?
> 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 %
Claro, pero que es codigos_provincia.codigo? Efectivamente es el valor de n_aux. Nuevamente no entiendo lo que queres hacer aca.
> Y me da el siguiente error al insertar:
> INSERT INTO mitabla VALUES (28080, 'Madrid', 'Juan');
>
> ERROR: query "SELECT ( $1 = codigos_provincia.codigo)" returned more
Esta es la consulta que esta fallando. Y con justa razon, ya que codigos_provincia.codigo te devuelve todos los codigos de la tabla.
Prueba de escribir en el psql la consulta "SELECT codigos_provincia.codigo" y ve el resultado.
> 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?
Tenes que repenzar la funcion. Yo empezaria de cero con ella.
--
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' ||
Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------
From | Date | Subject | |
---|---|---|---|
Next Message | antonio albiñana crespo | 2006-05-01 16:02:06 | Re: returned more than one row |
Previous Message | Julio Rivero | 2006-05-01 15:32:56 | Re: returned more than one row |