Ir para conteúdo
Fórum Script Brasil
  • 0

Trigger(chave estrangeira)


edersonnves

Pergunta

Estou com dificuldade para criar uma trigger para incluir o valor no campo da chave estrangeira.

tenho duas tabelas sendo uma de registro de ocorrencia que possui o campo n_bop que é auto_increment, que é chave estrangeira na outra tabela que é paciente, gostaria que ao ser inserido esse campo n_bop, tambem fosse inserido na tabela paciente, eu utilizei uma trigger so que não dar certo ele insere os valores na chave estrangeira, e os demais campos que são nome_pac, dt_nascimento_pac....etc ficam sem valores. E quando excluo a trigger os valores são inseridos normalmente so que a chave estrangeira dai e que fica sem valor na tabela paciente.

a Trigger que criei foi essa

delimiter |

create trigger numero_bop after insert on `tbl_bol_ocorrencia`

for each row

begin

insert into `tbl_paciente` (n_bop) value (new.n_bop);

end

|

delimiter;

Tabela boletim de ocorrencia

n_bop

tipo_oc

data_oc

hi_oc

hf_oc

endereço_oc

compl_oc

bairro_oc

cidade_oc

estado_oc

historico_oc

observacao

id_guarn

Tabela paciente

d_pac

nome_pac

dt_nascimento_pac

sexo_pac

nome_mae_pac

nome_pai_pac

endereco_pac

compl_pac

bairro_pac

cidade_pac

estado_pac

tel_pac

tipo_doc_pac

numero_doc_pac

orgao_exp_pac

uf_pac

n_bop

Editado por edersonnves
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'edersonnves'

Você está tentando criar um registro em tbl_paciente só com o atributo n_bop?

Não acha que precisa ter um cadastro completo para paciente?

Link para o comentário
Compartilhar em outros sites

  • 0

estou fazendo completo sim, so que via php veja

$nome = $_POST["nome_pac"];

$data_nascimento = $_POST["dt_nascimento_pac"];

$sexo_pac = $_POST["sexo_pac"];

$nome_mae = $_POST["nome_mae_pac"];

$nome_pai = $_POST["nome_pai_pac"];

$endereco = $_POST["endereco_pac"];

$complemento = $_POST["compl_pac"];

$bairro = $_POST["bairro_pac"];

$cidade = $_POST["cidade_pac"];

$estado = $_POST["estado_pac"];

$telefone = $_POST["tel_pac"];

$tipo_doc = $_POST["tipo_doc_pac"];

$numero_doc = $_POST["numero_doc_pac"];

$orgao_exp = $_POST["orgao_exp_pac"];

$uf = $_POST["uf_pac"];

$sqlpac = ("insert into tbl_paciente (nome_pac,dt_nascimento_pac,sexo_pac, nome_mae_pac,nome_pai_pac,endereco_pac,compl_pac,bairro_pac,cidade_pac,estado_pac,tel_pac,tipo_doc_pac,numero_doc_pac,orgao_exp_pac,uf_pac) values

('$nome','$data_nascimento','$sexo_pac','$nome_mae','$nome_pai','$endereco','$complemento','$bairro','$cidade','$estado','$telefone','$tipo_doc','$numero_doc','$orgao_exp','$uf')");

Link para o comentário
Compartilhar em outros sites

  • 0

OK. Então em seu Trigger use um UPDATE e cadastre (grave) a em tbl_bol_ocorrencia somente após gravar os dados em tbl_paciente.

Ou seja, siga o algorítimo abaixo:

1) Insira dados em tbl_paciente

2) Insira dados em tbl_bol_ocorrencia

2.1) Seu trigger atualiza tbl_paciente com base no novo valor de tbl_bol_ocorrencia.n_bop

3) fim de algorítimo.

Mais uma coisa. Tem certeza que o relacionamento entre estas tabelas é 1:N e não N:N?

Link para o comentário
Compartilhar em outros sites

  • 0

pensando bem voce pode ta certo com relação ao relacionamento pode ser que seja n:n.

mais pensando nesse problema ai do jeito que esta não não dar certo, ele insere todos os dados na tabela paciente menos a chave estrangeira ou seja n_bop. Fiz como falou inverte coloquei primeiro os dados na tb_paciente e depois na tbl_bol_ocorrencia mais mesmo assim não deu certo na realidade não fez diferença nenhuma

quando insiro dessa maneira (ou seja utilizando o insert) ele insere so a chave estrangeira e os demais valores ficam em brancos.

delimiter |

create trigger numero_bop after insert on `tbl_bol_ocorrencia`

for each row

begin

insert into `tbl_paciente` (n_bop) value (new.n_bop);

end

|

delimiter;

agora quando insiro dessa maneira(ou seja utilizando o update) ele insere todos os outros valores e a chave estrangeira fica em braco

delimiter |

create trigger numero_bop after update on `tbl_bol_ocorrencia`

for each row

begin

insert into `tbl_paciente` (n_bop) value (new.n_bop);

end

|

delimiter;

Editado por edersonnves
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...