Título: Trigger complejos MySQL Publicado por: rubcr en 3 Junio 2020, 00:43 am Hola a todos.
Tengo que crear unos triggers y son bastante liosos para mi ya que no tengo el suficiente nivel para ello. Las tablas dadas son las siguientes: Código Los triggers son: 1.Trigger que al introducir una fila en la tabla que nace de la relación entre pedido y producto (inventario) , compruebe que en la tabla producto hay stock y sino tiré un warning. 2.Trigger que tras introducir un nuevo producto compruebe que el precio es mayor que 0. Si es menor o igual a 0, el trigger deberá eliminar el artículo que se ha insertado. Espero que alguien pueda ayudarme. Un saludo. Título: Re: Trigger complejos MySQL Publicado por: MCKSys Argentina en 3 Junio 2020, 19:05 pm Hola!
Revisa este tutorial: https://www.mysqltutorial.org/mysql-triggers/mysql-after-insert-trigger/ (https://www.mysqltutorial.org/mysql-triggers/mysql-after-insert-trigger/) Saludos! Título: Re: Trigger complejos MySQL Publicado por: rubcr en 3 Junio 2020, 19:35 pm Hola! Hola gracias por el tutorial, pero no se ajusta al tipo de triggers que necesito ya que estos triggers no incluyen los datos generados en una tabla adicional.Revisa este tutorial: https://www.mysqltutorial.org/mysql-triggers/mysql-after-insert-trigger/ (https://www.mysqltutorial.org/mysql-triggers/mysql-after-insert-trigger/) Saludos! Un saludo. Título: Re: Trigger complejos MySQL Publicado por: K-YreX en 4 Junio 2020, 11:33 am Los triggers son: En este caso puedes crear un trigger BEFORE INSERT que compruebe lo que tú dices y en caso de que no sea válido puedes ejecutar:1.Trigger que al introducir una fila en la tabla que nace de la relación entre pedido y producto (inventario) , compruebe que en la tabla producto hay stock y sino tiré un warning. Código Te dejo un link para que leas más acerca de ello: https://dev.mysql.com/doc/refman/8.0/en/signal.html 2.Trigger que tras introducir un nuevo producto compruebe que el precio es mayor que 0. Si es menor o igual a 0, el trigger deberá eliminar el artículo que se ha insertado. De la misma forma que antes. En vez de insertar el producto y después de la inserción, comprobar la validez del mismo; puedes usar un trigger BEFORE INSERT y lanzar otro error si no se cumple la condición de validez del registro.Título: Re: Trigger complejos MySQL Publicado por: rubcr en 4 Junio 2020, 13:00 pm En este caso puedes crear un trigger BEFORE INSERT que compruebe lo que tú dices y en caso de que no sea válido puedes ejecutar: Puedes ayudarme un poco con la sintaxis porque no se muy bien como estructurarlo y que seleccionar a parte de lo que me indicas.Código Te dejo un link para que leas más acerca de ello: https://dev.mysql.com/doc/refman/8.0/en/signal.html De la misma forma que antes. En vez de insertar el producto y después de la inserción, comprobar la validez del mismo; puedes usar un trigger BEFORE INSERT y lanzar otro error si no se cumple la condición de validez del registro. Título: Re: Trigger complejos MySQL Publicado por: K-YreX en 4 Junio 2020, 15:16 pm Veo que el código que has puesto al comienzo del tema está completado en base a mi respuesta de este otro tema: https://foro.elhacker.net/bases_de_datos/pasar_a_mysql-t505018.0.html;msg2222689#msg2222689, lo que me hace pensar que no estás empleando ningún esfuerzo en hacerlo por ti mismo.
El foro es para ayudar, no para hacer tareas. No puedes esperar que te den todos los problemas solucionados porque en algún momento de tu vida tendrás que hacerlo tú solo y entonces no sabrás ni por dónde empezar. Ya tienes un punto de referencia para saber por donde empezar, además tienes muchísima información tanto en otros temas del foro como en Internet sobre cómo hacer triggers. Inténtalo tú e investiga sobre los problemas que tengas. Y cuando no encuentres información o no entiendas cómo solucionar un problema, aporta tu código para que alguien de la comunidad pueda ayudarte. Título: Re: Trigger complejos MySQL Publicado por: rubcr en 4 Junio 2020, 16:40 pm Veo que el código que has puesto al comienzo del tema está completado en base a mi respuesta de este otro tema: https://foro.elhacker.net/bases_de_datos/pasar_a_mysql-t505018.0.html;msg2222689#msg2222689, lo que me hace pensar que no estás empleando ningún esfuerzo en hacerlo por ti mismo. Para el primero tengo esto:El foro es para ayudar, no para hacer tareas. No puedes esperar que te den todos los problemas solucionados porque en algún momento de tu vida tendrás que hacerlo tú solo y entonces no sabrás ni por dónde empezar. Ya tienes un punto de referencia para saber por donde empezar, además tienes muchísima información tanto en otros temas del foro como en Internet sobre cómo hacer triggers. Inténtalo tú e investiga sobre los problemas que tengas. Y cuando no encuentres información o no entiendas cómo solucionar un problema, aporta tu código para que alguien de la comunidad pueda ayudarte. Código No me genera nada y no sé por qué está mal. Título: Re: Trigger complejos MySQL Publicado por: K-YreX en 4 Junio 2020, 19:23 pm Para empezar ese trigger salta después de la inserción por lo que aunque no sea válido el registro, ya estará insertado. Tiene que ser before.
Además no vale eso de producto.stock y ya. Cuando insertas un registro en Inventario, los campos que introduces son: id_pedido, id_producto, cantidad. Ninguno de ellos es stock. Así que lo que tienes que hacer es una consulta a la tabla Producto para obtener el registro asociado a ese id_producto. Título: Re: Trigger complejos MySQL Publicado por: rubcr en 5 Junio 2020, 02:29 am Para empezar ese trigger salta después de la inserción por lo que aunque no sea válido el registro, ya estará insertado. Tiene que ser before. Llevo varias horas intentando añadir lo que me indicas pero me has terminado de descolocar. XdddddAdemás no vale eso de producto.stock y ya. Cuando insertas un registro en Inventario, los campos que introduces son: id_pedido, id_producto, cantidad. Ninguno de ellos es stock. Así que lo que tienes que hacer es una consulta a la tabla Producto para obtener el registro asociado a ese id_producto. Como hago una consulta a una tabla entera? En este caso puedes crear un trigger BEFORE INSERT que compruebe lo que tú dices y en caso de que no sea válido puedes ejecutar: Hola de nuevo, el segundo trigger no se puede hacer, basicamente cuando haces un Insert la tabla se queda bloqueada y no podrias hacer otra accion como un delete seguida.Código Te dejo un link para que leas más acerca de ello: https://dev.mysql.com/doc/refman/8.0/en/signal.html De la misma forma que antes. En vez de insertar el producto y después de la inserción, comprobar la validez del mismo; puedes usar un trigger BEFORE INSERT y lanzar otro error si no se cumple la condición de validez del registro. Y del primero no consigo hacer nada. MOD: No hacer doble post. Usa el boton modificar. Título: Re: Trigger complejos MySQL Publicado por: K-YreX en 5 Junio 2020, 21:24 pm Hola de nuevo, el segundo trigger no se puede hacer, basicamente cuando haces un Insert la tabla se queda bloqueada y no podrias hacer otra accion como un delete seguida. Y del primero no consigo hacer nada. Trigger para que no permita introducir en Inventario una cantidad mayor que la que tiene ese producto en la tabla Producto: Código
Trigger que no permita introducir en la tabla Producto cantidades negativas: Código
He probado ambos triggers en una base de datos de prueba y funcionan. :silbar: :silbar: |