Re: fallo en insert?

From: "Cesar A(dot)" <carbonarac(at)cantv(dot)net>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: fallo en insert?
Date: 2004-05-28 17:34:17
Message-ID: 153470-220045528173417137@cantv.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

>> Tengo una tabla direccion (sec varchar(), calle varchar(), num_casa
>> vachar(), dir_id serial);
>> y otra tabla persona (nom varchar(), ape varchar(), doc_id varchar()
>> primary key, dir_id int references direccion (dir_id));

>De aca sale que doc_id es llave primaria de la tabla persona, y por lo
>tanto tiene un indice unico (no puede tener valores duplicados) y es no
>null (no acepta valores nulos).

Sip, pero doc_id es un valor entrable por el formulario, unico y no nulo,
el indice (persona_pkey) se asigan solo por cada doc_id, ¿no?

>> Un formulario que captura los datos, se lo asa a procesar.php que tiene
el
>> siguiente codigo:
>> <body>
>> <?php
>> $dbname="dbname=habitantes";
>> $insertar_direc="insert into
>> direccion
>> values('$sec','$calle','$num_casa')";;
>> $conexion=pg_connect($dbname);;
>> pg_exec($conexion,$insertar_direc);
>> $codigo_direc="direccion.dir_id";
>> $insertar_hab="insert into
>> persona
>> values('$nom','$ape','$d_i',$codigo_direc)";;
>> pg_exec($conexion,$insertar_hab);
>> pg_close($conexion);
>> ?>
>>
>> Y me arroja el siguiente error:
>> Warning: PostgreSQL query failed: ERROR: Cannot insert a duplicate key
into
>> unique index persona_pkey in /home/cesar/public_html/p_reg_persona.php on

>Te dice que estas tratando de ingresar en el campo doc_id (la llave
>primaria de la tabla) un valor que ya existe y se viola la unicidad de la
>llave primaria.

Pero estoy haciendo pruebas, y en doc_id no estan los valores que intento
introducir...

Como ven tngo dos inserciones, la de direccion y la de persona. La primera
se ejecuta perfectamente. Si a la segunda le elimino la insercion de la
clave ajena (dir_id) funciona perfectamente:

$insertar_hab="insert into
persona(nombre,apellido,doc_id,)
values('$nom','$ape','$d_i');";
pg_exec($conexion,$insertar_hab);

Repasemos...
En la tabla direccion tengo la clave primaria que se genera automaticamente
(dir_id de tipo serial), esa clave la agrego como ajena a la tabla persona
(dir_id de tipo int references direccion(dir_id))

Al intentar hacer esto es que me empiezan a saltar fallos...¿es posible que
lo tenga mal declarado? o algo???

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Multicast 2004-05-28 21:19:37 Real Aplication Cluster
Previous Message Martin Marques 2004-05-28 15:41:40 Re: fallo en insert?