Duvida no insert de N p/ N

7 respostas
S

Tenho uma tabela produto onde o produto possui um id
Outra tabela filial onde a filial tbm possui um id

se eu fosse fazer um insert, o id seria inserido na tabela auxiliar ou nas outras tabelas? pois o id tem q estar presente nas 2.

7 Respostas

MarcioCasteloBranco

Boa noite seria inserido na tabela produto!

jidlafe

Não esqueça que a tua tabela intermediária existe para manter a integridade dos teus dados.
O SGBD gera automaticamente - se você assim definir, um ID para tua chave primaria.
Sendo assim você pode usar um método que captura o ID e insere na tua tabela intermediária sempre
que uma nova linha for inserida na tua tabela.

S

Nossa e como faz isso? srsr s pq qdo eu faço um insert é apenas em 1 tabela

jidlafe

O SQL admite insert com select.

Exemplo:

INSERT INTO banco.tabela-destino (campo1, campo2, campo3...)
SELECT campo1,campo2,campo3... FROM banco.tabela-origem;

No caso você utiliza esta instrução no método que vai inserir o ID na tabela intermediária.
Você faz um select para capturar o ID cujo o nome do produto ou algo exclusivo ao produto e insere na tabela intermediária.

ok?

Qualquer duvida, estamos aqui.

S

estou fazendo assim.. porem não entendi direito seu exemplo

Connection conn = Conexao.getConnection();

            //Obtendo a conexão com o BD

            //Criando a string com sql a ser executada
            String sql = "INSERT INTO ocorrencia VALUES (?,?,?,?,?,?)";

            //Tratando a sql  a ser executada
            PreparedStatement pst = conn.prepareStatement(sql);
            //Definindo o primeiro parâmetro

            pst.setInt(1, ocorrencia.getIDOcorrencia());


            pst.setString(2, ocorrencia.getDescricao());
            // pst.setString(3,ocorrencia.getVeiculo().getDescricao());


            //Definindo o segundo parâmetro
            pst.setString(3, ocorrencia.getData());...............
jidlafe

Dá uma olhada no exemplo

String SQL = "INSERT INTO usuario (NomeFuncionario, NomeDeUsuario, SenhaDeUsuario, Email, Cargo, Area, Especialidade, Historico, DataCadastro, Status_Id)" +
                    "values(?,?,?,?,?,?,?,?,?,?)";
            conne = this.conn;
            pse = conne.prepareStatement(SQL);
            pse.setString(1, user.getNomeFuncionario());
            pse.setString(2, user.getNomeUsuario());
            pse.setString(3, "xxx@123");
            pse.setString(4, user.getEmail());
            pse.setString(5, user.getCargo());
            pse.setString(6, user.getArea());
            pse.setString(7, user.getEspecialidade());
            pse.setString(8, user.getHistorico());
            Utilitario util = new Utilitario();
            String dataF = util.convertToString(new Date());
            pse.setString(9, dataF);
            pse.setString(10, user.getStatus());
            pse.executeUpdate();

            //Vinculando o usuário a um grupo inicial
            pse = conne.prepareStatement("SELECT ID FROM usuario WHERE usuario.Email LIKE '" + user.getEmail() + "' ");
            resultSet = pse.executeQuery();

            while (resultSet.next()) {
                user.setIdUsuario(resultSet.getLong(1));
            }
public boolean vincularUsuarioTipoGrupo(Usuario user) throws Exception {
        PreparedStatement pse = null;
        Connection conne = null;

        try {
            String SQL = "INSERT INTO grupo_usuario_tipo(Usuario_Id, Grupo_Id, TipoUsuario_Id, DataAssociacao)" +
                    " values(?,?,?,?)";
            conne = this.conn;
            pse = conn.prepareStatement(SQL);
            Utilitario util = new Utilitario();
            String dataF = util.convertToString(new Date());
            pse.setLong(1, user.getIdUsuario());
            //Se o tipo selecionado for administrador ele será cadastrado no grupo administradores.
            String res = user.getGrupo().getIdGrupo().toString();
            pse.setString(2, res);
            pse.setString(3, user.getIdTipoUsuario());
            pse.setString(4, dataF);
            pse.executeUpdate();
S

Aquele metodo booleano vc esta usando para que?

Criado 14 de outubro de 2009
Ultima resposta 16 de out. de 2009
Respostas 7
Participantes 3