From: | "Verny Mata" <vernym(at)gmail(dot)com> |
---|---|
To: | "Roberto A(dot)" <gedeon56(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: ERROR: stack depth limit exceeded (triggers) |
Date: | 2008-11-12 23:30:22 |
Message-ID: | 3f6bb8b00811121530v2e4ffee3g464192c798419f22@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
No será mejor hacer un contraint para evitar duplicados?
algo como:
add constraint PK_ALUMNOS primary key (dni)
Luego la aplicación debería de evaluar si se generó el error por lave
primaria.
2008/11/12 Roberto A. <gedeon56(at)gmail(dot)com>
> Roberto Almanza LL.
>
> Hola a todos los de la lista el problema que tengo es el siguiente:
>
>
> CREATE TABLE ALUMNO( dni varchar(15) primary key,
> nombre var_nomb,
> ap_pat var_nomb,
> ap_mat var_nomb,
> telf varchar(12),
> calle varchar(50),
> ciudad varchar(50),
> provincia varchar(50),
> fecha_nac date not null,
> estado_civil char(1) default 'S' check(estado_civil
> in('S','C','V','P','D'))
> );
>
>
> -------------------------------------------------trigger---------------------------------------------------------------
>
> CREATE TRIGGER VERIFICAR_ALUMNO
>
> BEFORE INSERT ON ALUMNO
>
> FOR EACH ROW EXECUTE PROCEDURE Validar_Alumno();
>
>
>
> CREATE OR REPLACE FUNCTION Validar_Alumno()
>
> RETURNS TRIGGER AS
>
> $$
>
> BEGIN
>
> if( not exists(select * from alumno where dni=new.dni))then
>
> insert into alumno values(new.*);
>
> else
>
> RAISE EXCEPTION 'Ya existe un usuario registrado con este dni';
>
> end if;
>
> return null;
>
> END;
>
> $$
>
> LANGUAGE 'PLPGSQL';
>
>
> -------------------------------------------------trigger---------------------------------------------------------------
>
>
>
> el problema surge cuando quiero insertar datos en esta table
>
> insert into alumno values('7.777.777-L','Jose
> Antonio','Arenas','Bernabé','96-568-47-24','Pza. La paz, 3',
> 'Altea','Alicante','25-05-1973','C');
>
> Y me genera este error . si alguien podria desirme por que para esto.
>
> ERROR: stack depth limit exceeded
> HINT: Increase the configuration parameter "max_stack_depth", after
> ensuring the platform's stack depth limit is adequate.
> CONTEXT: SQL statement "SELECT ( not exists(select * from alumno where
> dni= $1 ))"
> PL/pgSQL function "val_alumno" line 2 at IF
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
> PL/pgSQL function "val_alumno" line 3 at SQL statement
> SQL statement "INSERT INTO alumno VALUES ( $1 .*)"
>
>
>
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2008-11-12 23:35:02 | Re: ERROR: stack depth limit exceeded (triggers) |
Previous Message | Roberto A. | 2008-11-12 22:54:41 | ERROR: stack depth limit exceeded (triggers) |