Re: returned more than one row

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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