Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: REMHINOB en Mayo 16, 2019, 01:52:44 PM

Título: [SOLUCIONADO] Eliminar y actualizar registros de una tabla mysql
Publicado por: REMHINOB en Mayo 16, 2019, 01:52:44 PM
buenos dias, aqui con otra consulta,
tengo una tabla despacho otra tabla det_despacho y otra tabla alm_materiales, mi pregunta es esta, como hacer si deseo eliminar un material en la tabla despacho se ellimine tambien de la tabla alm_despacho pero que las cantidades se actualicen en el stock en la tabla alm_materiales. gracias por su respuesta
Título: Re:eliminar y actualizar registros de una tabla mysql
Publicado por: DeBobiPro en Mayo 16, 2019, 02:03:11 PM
Hay varias formas de hacerlo, puedes programar un "trigger" que se gatille al momento de borrar un registro, pero creo que la opción más cómoda es trabajar la lógida desde algun lengauje de programación, como por ejemplo PHP.


if (Eliminar material en la tabla despacho){
Eliminar tambien de la tabla alm_despacho
Actualizar Cantidades
}

Espero haber podido guiar tu solución.

Saludos!
Título: Re:eliminar y actualizar registros de una tabla mysql
Publicado por: Solid Water en Mayo 16, 2019, 02:13:56 PM
Primero obtienes las cantidades a eliminar para luego poder restarlas.
Para restarlas puedes usar el lenguaje de la aplicacion o hacerlo en el SQL dentro del update.
Con respecto al borrado puedes hacer el delete from where en ambas tablas, o lo que yo supongo es que tienes las tablas relacionados por un primary key y un foreign key. En este caso puedes usar on delete cascade.

Saludos,
Título: Re:eliminar y actualizar registros de una tabla mysql
Publicado por: animanegra en Mayo 16, 2019, 02:19:20 PM
Una puntualización, si al final las haces utilizando varias operaciones en lugar de un trigger directo como te están comentando y como normalmente es lo más cómodo. Deberias de poner las operaciones entre un lock tables y unlock tables. Si no, las operaciones no se harán de forma atómica y puedes tener resultados inesperados. Cuando estés solo delante del servidor no, pero en cuanto tengas varios clientes a la vez, empezarán los problemas.
Título: Re:eliminar y actualizar registros de una tabla mysql
Publicado por: REMHINOB en Mayo 16, 2019, 03:13:17 PM
tengo esta linea el cual me suma a la tabla base_material  la cantidad de ingreso  no si sea posible ponerle un delete para que ya ingresado el stock al material me elimine los registros de la tabla alm_detingtock, a por cierto estoy trabajando con java netbeans y mysql

Update base_material BM set BM.stock_material= (select AI.cant_detingstock from alm_detingstock AI where AI.id_material='01010010001' and AI.id_ingstock='00000028') where id_material='01010010001'
Título: Re:eliminar y actualizar registros de una tabla mysql
Publicado por: REMHINOB en Mayo 16, 2019, 04:20:03 PM
Bueno ya lo logre, en dos sentencias simples, si a alguien le sirve bien saludos

String sql="Update base_material BM set BM.stock_material= (BM.stock_material - (select AI.cant_detingstock "
                        + "from alm_detingstock AI where AI.id_material='"+idmaterial+"' and AI.id_ingstock= '"+idingstock+"')) "
                        + "where id_material='"+idmaterial+"'";
                gestion=new Clases.GestionDatos();
                resp=gestion.ejecutarSentencia(sql);
                if (resp>0){
                    sql="delete t1, t2 from alm_ingstock t1 "
                    + "inner join alm_detingstock t2 where "
                    + "t1.id_ingstock=t2.id_ingstock and t1.id_ingstock='"+idingstock+"' and t2.id_material='"+idmaterial+"'";
                    gestion=new Clases.GestionDatos();
                    resp=gestion.ejecutarSentencia(sql);
                    if(resp>0){
                        javax.swing.JOptionPane.showMessageDialog(this, "Registro Eliminado");
                        this.llenarTbResumen();
                    }
                }
Título: Re:eliminar y actualizar registros de una tabla mysql
Publicado por: DeBobiPro en Mayo 16, 2019, 04:21:46 PM
Perfecto!!

Gracias por compartir tu respuesta y no olvides marcar el post somo solucionado.

Saludos!