PostgreSQL - problema con violates foreign key constraint

   
Vista:

problema con violates foreign key constraint

Publicado por zendi (98 intervenciones) el 23/03/2015 00:32:27
estoy tratando de crear un registro en una tabla con este INSERT:

1
2
3
4
5
6
7
8
9
10
11
INSERT INTO consulta( id_medico, fecha, peso, talla,
circunfcefalica, circunfbrazo, observacion, meses, anios,
hepatitisa, hepatitisb, polio, fiebreamarilla, difteriatetanos,
varicela, meningitis, haemophilusinfluenza, sarampion, rubeola,
parotiditis, vph, rotavirus, tuberculosis, alergiap, amigdalp,
anemiap, apendicitisp, asmap, bronquip, denguep, dabdominalp,
chinkungunyap, colerap, gripep, hepap, hepabp, meninp, otitisp,
parotidap, sarampp, vphp) VALUES (1, '2015-03-22', 0, 0, 0, 0, 'uiuiuuuiiuiu',
0, 1, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
PERO ME ARROJA ESTE ERROR:


ERROR: insert or update on table "consulta" violates foreign key constraint "consulta_id_paciente_fkey"
SQL state: 23503
Detail: Key (id_paciente)=(3) is not present in table "paciente".


NO DEBIERA DAR EL ERROR YA QUE EL CAMPO ID_PACIENTE DE LA TABLA PACIENTE ESTA RELACIONADO CON EL CAMPO ID_PACIENTE DE LA TABLA CONSULTA, Y ES DE UNO A MUCHOS LO CUAL INDICA QUE LA TABLA CONSULTA TIENE QUE RECIBIR MUCHAS CONSULTAS DE UN PACIENTE.

POR FAVOR SI ALGUIEN PUDIERA AYUDARME.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

problema con violates foreign key constraint

Publicado por zendi (98 intervenciones) el 23/03/2015 13:41:07
Lo que estoy tratando es de grabar una consulta con este inser:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
echo $consulta = "INSERT INTO consulta(
						 id_medico,
    					 fecha,
						 peso,
						 talla,
					     circunfcefalica,
					     circunfbrazo,
					     observacion,
						 meses,
						 anios,
						 hepatitisa,
						 hepatitisb,
						 polio,
					     fiebreamarilla,
					     difteriatetanos,
					     varicela,
					     meningitis,
						 haemophilusinfluenza,
						 sarampion,
						 rubeola,
						 parotiditis,
					     vph,
						 rotavirus,
						 tuberculosis,
						 alergiap,
						 amigdalp,
						 anemiap,
                         apendicitisp,
                         asmap,
                         bronquip,
						 denguep,
						 dabdominalp,
						 chinkungunyap,
						 colerap,
						 gripep,
						 hepap,
						 hepabp,
						 meninp,
						 otitisp,
						 parotidap,
						 sarampp,
						 vphp)
  			      VALUES ($idmedico,
			      	     '$fecha',
			 		     $peso,
						 $talla,
					     $circunf,
					     $cirbrazo,
					    '$consulta',
						 $meses,
						 $anios,
					     $hepatitisa,
					     $hepatitisb,
					     $polio,
					     $fiebreama,
					     $difteria,
					     $varicela,
					     $meningitis,
					     $influenza,
					     $sarampion,
					     $rubeola,
					     $parotida,
					     $vph,
					     $rota,
					     $tuber,
						 $alergiap,
						 $amigdalp,
						 $anemiap,
						 $apendicitisp,
						 $asmap,
						 $bronquip,
						 $denguep,
						 $dabdominalp,
						 $chinkungunyap,
						 $colerap,
						 $gripep,
						 $hepap,
						 $hepabp,
						 $meninp,
						 $otitisp,
						 $parotidap,
						 $sarampp,
						 $vphp)";
     $agrega = @pg_query($conexion,$consulta);
if ($agrega){
				  echo "<script type='text/javascript'>
				 alert('El registro fue Agregado');
				 window.location='pacientes.php';
				 </script>";
			  }
   else
   {
     $_POST['ERROR'] = pg_last_error();
     require('pacientes.php');
   }
o debo guardar el paciente tambien?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con violates foreign key constraint

Publicado por zendi (98 intervenciones) el 23/03/2015 15:48:46
esta es la tabla paciente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TABLE paciente
(
  nrohistoria numeric NOT NULL,
  nombres character varying NOT NULL,
  apellidos character varying NOT NULL,
  direccion text,
  telefono integer,
  fecha_nac date NOT NULL,
  id_paciente serial NOT NULL,
  cod_sanguineo integer,
  cod_sexo integer,
  cta_correo text,
  CONSTRAINT paciente_pkey PRIMARY KEY (id_paciente),
  CONSTRAINT paciente_cod_sanguineo_fkey FOREIGN KEY (cod_sanguineo)
      REFERENCES gsanguineo (codigo) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT paciente_cod_sexo_fkey FOREIGN KEY (cod_sexo)
      REFERENCES sexo (codigo) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT paciente_nrohistoria_key UNIQUE (nrohistoria)
)

relacionada con esta otra:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TABLE consulta
(
  id_consulta serial NOT NULL,
  fecha date NOT NULL,
  id_paciente integer,
  id_medico integer,
  peso numeric(5,2),
  talla numeric(5,2),
  circunfcefalica numeric(5,2),
  circunfbrazo numeric(5,2),
  observacion text,
  meses numeric,
  anios numeric
  CONSTRAINT consulta_pkey PRIMARY KEY (id_consulta),
  CONSTRAINT consulta_id_medico_fkey FOREIGN KEY (id_medico)
      REFERENCES medico (id_medico) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT consulta_id_paciente_fkey FOREIGN KEY (id_paciente)
      REFERENCES paciente (id_paciente) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE
)
la idea es que se debe crear un registro en la tabla consulta por cada id_paciente del campo id_paciente de la de paciente, pero no lo esta haciendo.
Cambié el campo id_paciente de consulta a integer para ver si funcionaba y no lo hace, antes era tipo serial.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con violates foreign key constraint

Publicado por zendi (98 intervenciones) el 24/03/2015 03:18:11
Bueno saludos a todos. Intentare por otro lado la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con violates foreign key constraint

Publicado por nelson (1 intervención) el 24/03/2015 03:35:49
si es una tabla hja de paciente definitivamente debes insertar al apciente primero para q el constrain pueda validarse contra un codigo o key
y por eso sale ese error Detail: Key (id_paciente)=(3) is not present in table "paciente".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con violates foreign key constraint

Publicado por zendi (98 intervenciones) el 24/03/2015 04:13:17
hola, gracias por responder, pero ahi estoy claro, te explico; ya el paciente esta grabado, el asunto es que ahora yo lo llamo por nro de historia para crearle una consulta:

en el formulario traigo los datos del paciente ya grabados, y con el INSERT que debe crear un registro en la tabla consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con violates foreign key constraint

Publicado por zendi (98 intervenciones) el 24/03/2015 04:38:19
Te hare un grafico de como es la situacion,

hay un nrohistoria, por ejemplo el nro 1 con un id_paciente 1 en ambas tablas; ahora se supone que alguna otra vez tendra una consulta entonces seria asi: nrohistoria 1 e id_paciente 1 en ambas tablas? Solo en la tabla consulta debe repetirse el id_paciente? o debo hacer una combinacion con la fecha de consulta? Como se controlaria esto en realidad?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar