PostgreSQL - crear registro

   
Vista:

crear registro

Publicado por zendi (99 intervenciones) el 28/03/2015 01:54:19
He hecho esta instruccion
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
INSERT INTO consulta(
            id_medico,
            fecha,
            peso,
            talla,
            circunfcefalica,
            circunfbrazo,
            observacion,
            meses,
            anios,
            hepatitisa,
            hepatitisb)
    VALUES ( $idmedico,
            '$fecha',
            $peso,
            $talla,
            $circunf,
            $cirbrazo,
        '$consulta',
            $meses,
            $anios,
            $hepatitisa,
            $hepatitisb)";
     $agrega = @pg_query($conexion,$consulta);
para crear el registro en la tabla de consulta, pero no lo esta haciendo, aun cuando las tablas paciente y consulta estan relacionadas con el campo id_paciente de ambas tablas.

esta es la estructura de 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)
)

esta es la de consulta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE TABLE consulta
(
  id_consulta serial NOT NULL,
  fecha date NOT NULL,
  id_paciente serial NOT NULL,
  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,
  hepatitisa numeric,
  hepatitisb 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
)
estan relacionadas con los campos que estan negrita, pero si crea el registro cuando coloco el campo id_paciente en el INSERT, cuando no es necesario colocarlo ya que es campos SERIAL
por favor respondame a ver si pueden ver cual es el error.
Nota: estos codigos estan en un formulario
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

crear registro

Publicado por zendi (99 intervenciones) el 29/03/2015 03:39:16
Habrá o existirá alguien que pueda ayudar????
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

crear registro

Publicado por eyanez (3 intervenciones) el 29/03/2015 13:52:58
Hola a tu query al parecer no le falta nada (digo eso por que no lo he probado), pero el problema es de lógica

En la tabla Consulta Match Simple (http://www.postgresql.org.es/node/249) o tienes NULL en id_paciente o tienes un registro que exista en la table pacientes, no puedes colocar lo que quieras, los foreign están echo para mantener integridad referencial
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

crear registro

Publicado por zendi (99 intervenciones) el 29/03/2015 22:33:13
Hola Eyanez, gracias por contestar pero el problema es que se debe grabar siempre un id_paciente en la tabla consulta despues que ya esta grabado en la tabla pcaiente.


algo asi :paciente.id_paciente = 1 y luego grabarlo en consulta.id_paciente = 1, en este caso en paciente el campo id_paciente es serial, y lo hago de manera manual y si funciona, pero de manera interactiva es decir a traves de codigo no lo hace, ahora mi pregunta es si el consulta.id_paciente tambien debe ser serial? o integer?

por eso fue que coloqué el codigo este:


1
INSERT INTO consulta( id_medico, fecha, peso, talla, circunfcefalica, circunfbrazo, observacion, meses, anios, hepatitisa, hepatitisb) VALUES ( $idmedico, '$fecha', $peso, $talla, $circunf, $cirbrazo, '$consulta', $meses, $anios, $hepatitisa, $hepatitisb)"; $agrega = @pg_query($conexion,$consulta);

cabe preguntar tambien como hago para que se grabe el id_paciente en consulta si tener que colocarlo en el INSERT?

alli se nota que no estoy colocando id_paciente, el cual debiera grabarse el codigo que viene de paciente.id_paciente.
disculpa si no se explicarme. Saludos.
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

crear registro

Publicado por eyanez (3 intervenciones) el 30/03/2015 14:27:48
Ok hay varias cosas

1) En la tabla consulta tienes id_paciente serial NOT NULL, y debe ser INTEGER

2) También en la tabla de consulta podrias crear un trigger before insert para que verifiques o agregues el paciente primero y luego de ser el caso le asignes el nuevo valor de id_paciente en la tabla consulta si te hace falta claro
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

crear registro

Publicado por zendi (99 intervenciones) el 30/03/2015 16:31:02
Ya una vez había cambiado este campo a INTEGER pero seguía sin funcionar de todos modos voy a realizar lo del trigger.

Gracias eyanez
Saludos.
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

crear registro

Publicado por zendi (99 intervenciones) el 30/03/2015 22:22:53
Hola eyanez, ya resolvi el problema, y agradezco tu 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

crear registro

Publicado por eyanez (3 intervenciones) el 01/04/2015 02:13:49
No hay de que para eso estamos
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