Inserir Dados em duas tabelas ao mesmo tempo [RESOLVIDO]

5 respostas
J

Boa tarde Galera,

Seguinte, estou desenvolvendo um sistema no NetBeans + MySQL. Tenho a seguinte dúvida:

Tabelas do banco:

*Avaliação Física

AVAID                         int(11)  PRI  auto_increment

ALUID                         int(11)

AVANUMERO                int(11)

AVADATAAVALIACAO   date

FUNCID                       int(11)
*Anamnese

ANAMID        int(11) PRI auto_increment

AVAID          int(11) chave estrangeira

ANAMOPT1    varchar(100)

ANAMOPT2    varchar(100)

ANAMOPT3    varchar(100)

ANAMOPT4    varchar(100)

ANAMOPT5    varchar(100)

ANAMOBS     varchar(200)

Preciso fazer o seguinte. Quando incluir um registro na tabela Avaliação física, automaticamente tem que ser criado um registro na tabela Anamnese. Até agora a única coisa que consegui fazer foi salvar na tabela Avaliação Física:

String sqlinsert = "insert into avaliacaofisica (AVADATAAVALIACAO, AVANUMERO, ALUID, FUNCID) values ('" +
                        avaldtField.getText() + "','" +
                        avalnrField.getText() + "','" +
                        aluidField.getText() + "','" +
                        funcidField.getText() + "')";
                conectaAvaliacao.statement.executeUpdate(sqlinsert);
                JOptionPane.showMessageDialog(null, "Dados salvos com sucesso.", "Salvando", JOptionPane.INFORMATION_MESSAGE);

Não sei como fazer pelo fato do campo AVAID da tabela Avaliação Física ser auto incremento.

Desde já muito obrigado pela ajuda!
Abraço

5 Respostas

carlos.e.a

Cara nao seria melhor pra fazer isso voce usar uma trigger? Assim quando voce fizer a inserçao o proprio SGBD se encarrega de inserir na outra…

Lucas_Rinaldi

Cara depois que tu adicionar na tabela avaliação fisica faz um query pra puxar o número do avaid e manda pra tabela Anamnese.

Abraços

J

Valeu pela dica carlos.e.a. Dei uma pesquisada sobre triggers e criei a seguinte:

DELIMITER $$

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    TRIGGER `sisgym`.`BI_AVALIACAO_ANAMNESE` AFTER INSERT
    ON `sisgym`.`avaliacaofisica`
    FOR EACH ROW 
    BEGIN
      IF (NEW.avaid IS NOT NULL) THEN
	INSERT INTO anamnese SET avaid= NEW.avaid;
    END IF;
    END$$

DELIMITER ;

Está funcionando certinho!!
Abraço a todos e obrigado pela ajuda.

carlos.e.a

Fico feliz em ajudar!!!

Trigguers sao realmente muito interessantes para esse teu tipo de problema e fáceis de fazer e aprender. Por isso eu citei mesmo sem saber se voce sabia porque uma pesquisa rapida na net voce entende facinho. Não esquece de colocar o topico como resolvido!

Qualquer coisa estamos aí!

J

Valeu galera!

Criado 9 de janeiro de 2011
Ultima resposta 17 de jan. de 2011
Respostas 5
Participantes 3