Este tema me dió dolores de cabeza en la universidad por qué no entendía lo que mi profesora trataba de explicar, aquí entendí muy bien el tema de los triggers y procedimientos. 2020 y es la fecha en que sigo considerando que es uno de los mejores videotutoriales sobre Base de datos que he encontrado.
Gracias! Muchas gracias! Soy del Brasil y estoy aprendiendo a hablar español sólo para ávidamente sus cursos, pero usted enseña tan bien que puedo entender todo. Gracias!
Juan yo sigo pensando que eres genial por enseñarnos tanto cada día, agradecido estoy infinitamente y siempre podrás contar con mi apoyo. De corazón muchísimas gracias.
Ya tengo un tiempo siguiendo tu canal y quiero agradecerte por hacer este tremendo esfuerzo, aun no puedo creer que exista alguien así!!! Todos deberíamos valorar tu trabajo, eres uno en un billón, gracias por todo!! saludos desde México :D
Excelente forma de explicar, de igual forma es de agradecer, al menos en lo mínimo que se puede hacer, la forma en que compartes con toda una audiencia, y además de forma gratuita, los conocimientos con los que cuentas. Tu canal es el más completo de todo RUclips en habla hispana relacionado al tema de desarrollo en diferentes ámbitos. Gracias por tu dedicación y esfuerzo en compartir todo esto.
muchísimas gracias profe por el curso puedo decir que he aprendido mas con usted de lo que aprendí con mis maestros de la universidad... es un excelente maestro (y) un saludo desde Honduras y muchísimas gracias nuevamente!!
que genio!! Con tres videos no más logré hacer un trigger distinto a los que mostras. Este guarda un valor (que hago con un cálculo) en un campo de la misma tabla que está asociada al trigger y funciona! Por que busqué por ahí y te la complican mucho, para los que tenemos poco conocimiento esn mysql, con la variable global @, etc.
te felicito muy buenos los cursos. sos todo un docente x otros van muy rapido y no se tiene la curva de aprendizaje que si vos ofreces, ojala tengas tiempo para seguir ilustrando. un abrazo desde salta argentina.
Hola profesor, la verdad es que este curso de sql, ha clarificado de mejor manera el uso de consultas y demás, aunque me hubiera gustado que mencionara los parámetros de entrada y salida en los procedimientos almacenados y el uso de las funciones, aunque eso es casi similar a los procedimientos, pero aun así, excelente curso.
Hola Juan es simplemente para saludarte, y que estoy mas liao de amo de casa que trabajando y tengo un poco abandonadas las clases..... a Junio fijo que no llego ni con este ni con el de PHP. Espero que tengas vacaciones estos días y que las disfrutes. Por cierto sigo disponible para eso de hacer fotocopias y traer cafés que no se te olvide...ja, ja, ja. Un saludo Juan y simplemente...GRACIAS.
+Juanito elchispa Cómo te voy a mandar hacer fotocopias con lo liado que estás!!. Además, no quiero crear problemas domésticos. Espero que tú también pases bien estos días. Un saludo amigo
Muy buenas, muchas gracias por toda su colaboración, aprovecho para felicitarlo, es ud. muy buen instructor. Por otra parte comentarle.... bueno quería comentarle que no puedo crear el tigger porque mi versión de mysql no lo permite... obviamente debo bajar una versión actualizada, eso voy a hacer. Muchas felicidades.
+Marcelo Calatayud Gracias por el comentario. me alegro de que te gusten los vídeos. Efectivamente las versiones algo antiguas de MySql no admiten los triggers. Lo solucionarás con una versión nueva. Un saludo
Para los que estan utilizando postgress, esta es la forma que encontre para crear la primera funcion: CREATE FUNCTION calculate_age(year_of_birth int) RETURNS int LANGUAGE plpgsql AS $$ DECLARE currently_year int; age int; BEGIN currently_year := 2016; age= currently_year - year_of_birth; RETURN age; END $$;
Buenos días Juan! Si no me equivoco comentaste que para una misma tabla no podía haber dos trigger del mismo tipo (o eso le has dicho a algún compañero en los mensajes), por ejemplo, dos BEFORE UPDATE pero tengo dos y han funcionado los dos. Ambos asociados a la tabla PRODUCTOS. El primero es el de ACTUALIZA_PRODUCTOS_BU que como sabes guarda la información antes de actualizarla en una nueva tabla llamada PRODUCTOS_ACTUALIZADOS y el segundo REVISA_PRECIO_BU que no permite actualizar los precio por debajo de 0 o por encima de 1000 y en ambos le da valor 0 si es menor que 0 o 1000 si es mayor que 1000. Supongamos que el destornillador tiene un precio de 15 y que yo le quiero poner 8500. El precio en la tabla PRODUCTOS se actualiza y pasa a ser de 1000 porque el trigger de REVISA_PRECIO_BU se activa, hasta ahí bien. Pero cuando reviso la tabla PRODUCTOS_ACTUALIZADOS, el precio de la actualización que aparece en esta tabla es el de 8500 y no 1000 como es lo que finalmente aparece en la tabla PRODUCTOS una vez actualizada. ¿La información de la tabla ACTUALIZA_PRODUCTOS no se podría considerar un poco engañosa, porque no aparece el precio final que figurará en la tabla PRODUCTOS sino el valor que el usuario le da aunque ese no sea el valor que finalmente aparecerá en PRODUCTOS debido a los triggers? Perdón por la parrafada, espero haberme explicado. Un saludo y gracias por los vídeo.
Sigo tu canal hace un tiempo y ya he realizado algunos cursos contigo que me han ayudado a potenciar mi profesi[on y darle un cambio ligero a la misma. Te agradezco enormemente por la enseñanza impartida en este y todos los demás cursos que tienes en tu plataforma y aquí en el canal. Con respecto a este vídeo me surge una pregunta, ¿Es posible poner la restricción de precios (como lo haces en el vídeo), pero además que el trigger pueda almacenar qué usuario intenta hacer este cambio no permitido? De nuevo muchas gracias por todo
Muchas gracias por este video una pregunta como puedo generar excepciones en triggers por ejemplo tengo una tabla de productos y si la cantidad o el valor es menor que cero entonces que se cree una excepción y esta se lea al momento de ejecutar mi query desde php. Esta es mi duda desde hace meses muchas gracias saludos
Hola !! Es una buena pregunta pero demasiado extensa como para escribirte por aquí todo el código. Para ello deberías programar la condición desde PHP, al menos así lo haría yo. Desconozco si desde SQL se puede de alguna manera generar una excepción que se refleje en el código PHP. Hay un curso de PHP en mi canal donde se explica lo necesario para poder hacer lo que necesitas. Un saludo!!
Para SQL Server: --Crear procedimiento CREATE PROCEDURE CALCULA_EDAD @AÑO_NACIMIENTO INT AS BEGIN DECLARE @AÑO_ACTUAL INT DECLARE @EDAD INT SET @AÑO_ACTUAL = YEAR (CURRENT_TIMESTAMP) SET @EDAD = @AÑO_ACTUAL-@AÑO_NACIMIENTO SELECT @EDAD END --Ejecutar procedimiento EXEC CALCULA_EDAD @AÑO_NACIMIENTO = 1986 --Eliminar procedimiento DROP PROCEDURE IF EXISTS CALCULA_EDAD
consulta, según tengo entendido algunas versiones servidores centOS no se recomienda escribir las querys en mayúsculas dado que no las reconocen, es cierto esto?
Gracias por los vídeos, y por transmitirnos todo con sencillez(aúnque sea complejo), mi duda para próximos vídeos es si se puede ejecutar un tigger cada hora que ejecute una función. quizás sea mas fácil ejecutar una función cada hora. ¿ésto cómo se haría? Un saludo desde El Hierro (Canarias) y gracias por hacer lo que haces
Hola !! GGracias por el comentario. Yo no sabría hacer tal cosa solo con SQL. Necesitaría de otro lenguaje que ejecute una función cada hora. Por ejemplo con PHP. Me escribes desde un paraíso ideal para desconectar y perderse. Qué envidia. Un saludo!!
Para Ejecutar una función cada cierto tiempo Juan lo podrías hacer creando un evento, te dejo el enlace de la documentaciñon oficial de MySQL donde lo trata dev.mysql.com/doc/refman/5.7/en/events-overview.html y un pequeño ejemplo de un evento creado por mi que se ejecuta cada semana. DELIMITER $$ CREATE EVENT week_event ON SCHEDULE EVERY 1 WEEK STARTS CURRENT_TIMESTAMP -- Inicio del evento. COMMENT 'Cada semana se dispara el procedimiento pr_sum_punt' -- Comentario aclaratorio. DO BEGIN CALL pr_sum_punt(); END $$ -- Fin del evento DELIMITER;
Hola amigos, yo quisiera que al modificar la tabla, la accion del trigger se ejecute luego de 30minutos, como consigo hacer eso?? gracias por sus respuestas.
Solo añadir una pequeña mejora para el procedimiento calcula_edad para que el año actual se calcule de forma automática y no quede fijado en el que se ponga de manera manual, como en el video en 2016: .... DECLARE AGNO_ACTUAL INT DEFAULT YEAR(NOW()); ....
Hola, gracias por tus cursos, me han ayudado mucho, gracias. porfavor si me puedes ayudar que tengo un problema no me aparece la opción ejecutar en la vista de estructura de los procedimientos. Gracias por todo un gran abrazo.
Muy bien tus videos. Tengo una pregunta, puedo en una función o procedure incluir un select a una tabla para que me devuelva un valor dado un parámetro? Lo estoy intentando y no lo consigo. Gracias
Hola, Profesor Cómo está? He creado el siguiente procedimiento : DELIMITER // CREATE PROCEDURE CAL_EDAD ( AÑO_NACIMIENTO INT) BEGIN DECLARE AÑO_ACTUAL INT DEFAULT 2016; DECLARE EDAD INT; SET EDAD = AÑO_ACTUAL - AÑO_NACIMENTO; SELECT EDAD; END;// DELIMITER ; Se crea sin problemas, igual que en el video. Pero al ejecutarlo me sale un mensaje " Su consulta se ejecutó con éxito. 0 filas afectadas por la última sentencia del procedimiento." Y otro que dice " MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas)." Por favor podría decirme por qué se puede está presentando ésto y no arroja ningún resultado ? Muchas gracias
Profesor, luego de un mes de trabajar a la par de sus tutoriales y de haber creado una tabla he llegado al momento donde debo exportar una tabla, pero quisiera exportarla por ejemplo en PDF pero ordenada, es decir. He utilizado la sentencia "order by..." Pero al momento de exportar la tabla se muestra en PDF con el orden de columnas predeterminado (el mismo orden en el que había creado las columnas). Existe algún modo? Muchas gracias!
Profesor disculpe tengo una duda : creo un trigger que almacena las actualziaciones que haga en una tabla diferente osea me refiero a los datos antiguos y los nuevos, ok, hasta ahi funciona bien , pero cuando creo un procedimiento que haga una actualizacion y lo utilizo , este no hace uso del trigger y no almacena los datos antihuos y nuevos en la tabla donde debia almacenarse para conocer los cambios hechos , osea mejor dicho dese un procedimiento no hace caso al trigguer y me pregunto si hay alguna manera de solucionarlo :) .Espero que me haya entendido :)
+Jose Suarez Creo que te he entendido. ¿Y si haces un trigger con el código del procedimiento? Habrás visto en el vídeo que los trigger admiten declaraciónn de variables, estructuras de control de flujo etc... Un saludo
primeramente felicitarle por sus tutoriales me han sido de utilidad, pero en este caso cuando voy a utilizar la palabra reservada declare no puede ejecutarse el procedimiento me indica que existe un error en la linea donde esta declare pero no especifica y el código es tal cual el del vídeo,pedirle por favor me ayude a resolver este problema, gracias
Profesor, ¿en este video creamos en primera un "procedimiento" y en segunda "un trigger" con estructura de procedimiento? Lo pregunto debido a que en la segunda parte no vi la clausula "Create Procedure" pero noté que era como una mezcla de ambos (por la estructura), ya que incluso el phpmyadmin lo guardó como trigger. Espero me haya dado entender.
Hola, muy bien entendido, pero hay algo que o me entero, si yo quiero hacer el llamado desde la consola como lo hago, veo que al momento de ejecutar te sale algo con @ que segun se es el declarado por el usuario. Ose escribo.. call calcula edad (1985); ?
hola tengo el siguiente problema : "un mecanismo el cual en caso de ingresar un estudiante con rut incorrecto, no permita que este se guarde (o al menos no permita que se mantenga) en la base de datos." he intentado generarcondiciones con if pero no lo he logrado, alguna sugerencia???
Hola fue, lamentablemente no pude realizar el trigger ya que me sale este mensaje ¿Y ahora que? :'v ¿No hay alguna documentación como la api de java pero para especificamente para este gestor MYSQL. #1235 - Esta versión de MariaDB no soporta todavia 'multiple triggers with the same action time and event for one table'
Buenas tardes profesor, al intentar crear el ultimo trigger el cual permite que el precio de un producto no sea disparatado (no valga menos de 0, o mas de 1000) me sale un error el cual dice #1235 - Esta versión de MariaDB no soporta todavia 'multiple triggers with the same action time and event for one table', usted sabe por qué me podría suceder esto si al yo haber creado los anteriores triggers del curso, nunca me ocurrió ningún problema?, gracias
HOLA QUE TAL QUERIDO PROFESOR, UNA CONSULTA POR FAVOR, HASTA CUANTOS TRIGGER PUEDE TENER UNA TABLA?? PORQUE EN ESTE CURSO HICIMOS 3 ANTES DE ESTE Y VEO QUE USTED ELIMINO UN TRIGGER DE LA TABLA PRODUCTOS. PORQUE AL HACER ESTE TRIGGER ME SALE ESTE ERROR PROFE consulta SQL: CREATE TRIGGER REVISA_PRECIO_BU BEFORE UPDATE ON PRODUCTOS FOR EACH ROW BEGIN IF(NEW.PRECIO1000) THEN SET NEW.PRECIO=1000; END IF; END; MySQL ha dicho: Documentación #1235 - This version of MariaDB doesn't yet support 'multiple triggers with the same action time and event for one table'
#1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Query: DELIMITER $$ CREATE TRIGGER REVISA_PRECIO_BU BEFORE UPDATE ON PRODUCTOS FOR EACH ROW BEGIN IF(NEW.PRECIO1000) THEN SET NEW.PRECIO=1000; END IF; END; $$ DELIMITER; Que hago ? :(
+Dionisio Barboza Borrar el otro trigger que debes tener también con Before Update. No pudes tener en una misma tabla dos trigger que realizan acciones diferentes bajo el mismo evento (before update) ¿A cuál de los dos haría caso? Un saludo
Muchas gracias! En un rato pruebo. Juan una pregunta, CURL en pocas palabras es la librería que se usa para hacer peticiones HTTP a otro servidor desde PHP no?
--En sql server 2012: CREATE TRIGGER REVISA_PRECIO_BU ON PRODUCTOS INSTEAD OF INSERT AS BEGIN SET NOCOUNT ON; INSERT INTO PRODUCTOS (CÓDIGOARTÍCULO, SECCIÓN, NOMBREARTÍCULO, PRECIO, FECHA, IMPORTADO, PAÍSDEORIGEN, FOTO)
SELECT i.CÓDIGOARTÍCULO, i.SECCIÓN, i.NOMBREARTÍCULO, i.PRECIO, i.FECHA, i.IMPORTADO, i.PAÍSDEORIGEN, i.FOTO FROM inserted AS i WHERE PRECIO>1000 END GO --Gracias profe
Este tema me dió dolores de cabeza en la universidad por qué no entendía lo que mi profesora trataba de explicar, aquí entendí muy bien el tema de los triggers y procedimientos.
2020 y es la fecha en que sigo considerando que es uno de los mejores videotutoriales sobre Base de datos que he encontrado.
dejen que corra la publicidad para que el sea remunerado monetaria mente, ya que el curso es bueno y gratis
Casi NO veo publicidad en sus vídeos, por qué??
Una vez mas te agradezco tu enorme aporte a los estudiantes y trabajadores. Gente como tú falta mucho más en este planeta.
Que Dios te bendiga.
Gracias por el comentario. Me alegro de que te gusten los vídeos. Un saludo!!
Gracias! Muchas gracias! Soy del Brasil y estoy aprendiendo a hablar español sólo para ávidamente sus cursos, pero usted enseña tan bien que puedo entender todo. Gracias!
+Julio Moraes Gracias por el comentario y por seguir mis vídeos. Me alegro de que te gusten. Un saludo!!
Juan yo sigo pensando que eres genial por enseñarnos tanto cada día, agradecido estoy infinitamente y siempre podrás contar con mi apoyo. De corazón muchísimas gracias.
Ya tengo un tiempo siguiendo tu canal y quiero agradecerte por hacer este tremendo esfuerzo, aun no puedo creer que exista alguien así!!! Todos deberíamos valorar tu trabajo, eres uno en un billón, gracias por todo!! saludos desde México :D
+Pedro Aragon Muchas gracias por tu comentario y por seguir mis vídeos. Me alegro de que te gusten. Un saludo
Excelente forma de explicar, de igual forma es de agradecer, al menos en lo mínimo que se puede hacer, la forma en que compartes con toda una audiencia, y además de forma gratuita, los conocimientos con los que cuentas.
Tu canal es el más completo de todo RUclips en habla hispana relacionado al tema de desarrollo en diferentes ámbitos.
Gracias por tu dedicación y esfuerzo en compartir todo esto.
Este Juan es Tremendo enseñando , gracias por compartir tus conocimientos con nosotros Juan Dios te Bendiga !
:))) Gracias por el comentario. Me alegro de que te gusten los vídeos. Un saludo!!
muchísimas gracias profe por el curso puedo decir que he aprendido mas con usted de lo que aprendí con mis maestros de la universidad... es un excelente maestro (y) un saludo desde Honduras y muchísimas gracias nuevamente!!
+Didi Aguilar Muchas gracias por el comentario. Me alegro de que te gusten los vídeos. Un saludo!!
que genio!! Con tres videos no más logré hacer un trigger distinto a los que mostras. Este guarda un valor (que hago con un cálculo) en un campo de la misma tabla que está asociada al trigger y funciona! Por que busqué por ahí y te la complican mucho, para los que tenemos poco conocimiento esn mysql, con la variable global @, etc.
Explicado mejor que mi profesor, gracias por tus videos. Siempre vengo a tu canal para aprender mucho mas y con mejor calidad.
Que admirable trabajo, MUCHAS MUCHAS GRACIAS por compartir su conocimiento, estos son los videos que deberían tener millones de vistas.
te felicito muy buenos los cursos. sos todo un docente x otros van muy rapido y no se tiene la curva de aprendizaje que si vos ofreces, ojala tengas tiempo para seguir ilustrando. un abrazo desde salta argentina.
Hola profesor, la verdad es que este curso de sql, ha clarificado de mejor manera el uso de consultas y demás, aunque me hubiera gustado que mencionara los parámetros de entrada y salida en los procedimientos almacenados y el uso de las funciones, aunque eso es casi similar a los procedimientos, pero aun así, excelente curso.
2024 qué gran video! Apunto de culminar los 25 videos
Excelente, como todos los vídeos que ustedes tienen en su sitio, sigan siempre así.
Gracias !!! Pero solo hay una persona detrás de esto. El que te habla. Un saludo!!
Nuevamente felicitaciones y aun tratándose mas de una sola persona. Muy bien elaborados sus videos.
Hola Juan, simplemente quería felicitarte por haber alcanzado más de 100.000 suscriptores, tienes muchísimo mérito.
+JOSE MARIA AGUILAR-AMAT FERNANDEZ Muchas gracias !!! Sigo adelante gracias a vosotros. Un saludo!!
Genial, con este material los procesos se hacen mas facil..
Hola Juan es simplemente para saludarte, y que estoy mas liao de amo de casa que trabajando y tengo un poco abandonadas las clases..... a Junio fijo que no llego ni con este ni con el de PHP.
Espero que tengas vacaciones estos días y que las disfrutes.
Por cierto sigo disponible para eso de hacer fotocopias y traer cafés que no se te olvide...ja, ja, ja.
Un saludo Juan y simplemente...GRACIAS.
+Juanito elchispa Cómo te voy a mandar hacer fotocopias con lo liado que estás!!. Además, no quiero crear problemas domésticos. Espero que tú también pases bien estos días. Un saludo amigo
Muy buenas, muchas gracias por toda su colaboración, aprovecho para felicitarlo, es ud. muy buen instructor. Por otra parte comentarle.... bueno quería comentarle que no puedo crear el tigger porque mi versión de mysql no lo permite... obviamente debo bajar una versión actualizada, eso voy a hacer. Muchas felicidades.
+Marcelo Calatayud Gracias por el comentario. me alegro de que te gusten los vídeos. Efectivamente las versiones algo antiguas de MySql no admiten los triggers. Lo solucionarás con una versión nueva. Un saludo
Cordial saludo Amigo Juan, excelente y muchas gracias.
+Antonio Valderrama Gracias por el comentario. Un saludo
Simplemente Gracias
Para los que estan utilizando postgress, esta es la forma que encontre para crear la primera funcion: CREATE FUNCTION calculate_age(year_of_birth int) RETURNS int LANGUAGE plpgsql AS $$
DECLARE
currently_year int;
age int;
BEGIN
currently_year := 2016;
age= currently_year - year_of_birth;
RETURN age;
END
$$;
Wooow !! excelente muchas gracias !!! 😊
Buenos días Juan!
Si no me equivoco comentaste que para una misma tabla no podía haber dos trigger del mismo tipo (o eso le has dicho a algún compañero en los mensajes), por ejemplo, dos BEFORE UPDATE pero tengo dos y han funcionado los dos.
Ambos asociados a la tabla PRODUCTOS. El primero es el de ACTUALIZA_PRODUCTOS_BU que como sabes guarda la información antes de actualizarla en una nueva tabla llamada PRODUCTOS_ACTUALIZADOS y el segundo REVISA_PRECIO_BU que no permite actualizar los precio por debajo de 0 o por encima de 1000 y en ambos le da valor 0 si es menor que 0 o 1000 si es mayor que 1000.
Supongamos que el destornillador tiene un precio de 15 y que yo le quiero poner 8500. El precio en la tabla PRODUCTOS se actualiza y pasa a ser de 1000 porque el trigger de REVISA_PRECIO_BU se activa, hasta ahí bien. Pero cuando reviso la tabla PRODUCTOS_ACTUALIZADOS, el precio de la actualización que aparece en esta tabla es el de 8500 y no 1000 como es lo que finalmente aparece en la tabla PRODUCTOS una vez actualizada.
¿La información de la tabla ACTUALIZA_PRODUCTOS no se podría considerar un poco engañosa, porque no aparece el precio final que figurará en la tabla PRODUCTOS sino el valor que el usuario le da aunque ese no sea el valor que finalmente aparecerá en PRODUCTOS debido a los triggers?
Perdón por la parrafada, espero haberme explicado. Un saludo y gracias por los vídeo.
Sigo tu canal hace un tiempo y ya he realizado algunos cursos contigo que me han ayudado a potenciar mi profesi[on y darle un cambio ligero a la misma. Te agradezco enormemente por la enseñanza impartida en este y todos los demás cursos que tienes en tu plataforma y aquí en el canal. Con respecto a este vídeo me surge una pregunta, ¿Es posible poner la restricción de precios (como lo haces en el vídeo), pero además que el trigger pueda almacenar qué usuario intenta hacer este cambio no permitido?
De nuevo muchas gracias por todo
explicas excelente Martinoli
Hola, y en el caso de funciones en Mysql? no sería mejor realizarlo con funciones?
Muchas gracias por este video una pregunta como puedo generar excepciones en triggers por ejemplo tengo una tabla de productos y si la cantidad o el valor es menor que cero entonces que se cree una excepción y esta se lea al momento de ejecutar mi query desde php. Esta es mi duda desde hace meses muchas gracias saludos
Hola !! Es una buena pregunta pero demasiado extensa como para escribirte por aquí todo el código. Para ello deberías programar la condición desde PHP, al menos así lo haría yo. Desconozco si desde SQL se puede de alguna manera generar una excepción que se refleje en el código PHP. Hay un curso de PHP en mi canal donde se explica lo necesario para poder hacer lo que necesitas. Un saludo!!
Para SQL Server:
--Crear procedimiento
CREATE PROCEDURE CALCULA_EDAD @AÑO_NACIMIENTO INT AS
BEGIN
DECLARE @AÑO_ACTUAL INT
DECLARE @EDAD INT
SET @AÑO_ACTUAL = YEAR (CURRENT_TIMESTAMP)
SET @EDAD = @AÑO_ACTUAL-@AÑO_NACIMIENTO
SELECT @EDAD
END
--Ejecutar procedimiento
EXEC CALCULA_EDAD @AÑO_NACIMIENTO = 1986
--Eliminar procedimiento
DROP PROCEDURE IF EXISTS CALCULA_EDAD
¿Por qué no se usa IN para el parámetro de entrada del procedimiento?. Gracias
consulta, según tengo entendido algunas versiones servidores centOS no se recomienda escribir las querys en mayúsculas dado que no las reconocen, es cierto esto?
Gracias por los vídeos, y por transmitirnos todo con sencillez(aúnque sea complejo), mi duda para próximos vídeos es si se puede ejecutar un tigger cada hora que ejecute una función. quizás sea mas fácil ejecutar una función cada hora. ¿ésto cómo se haría? Un saludo desde El Hierro (Canarias) y gracias por hacer lo que haces
Hola !! GGracias por el comentario. Yo no sabría hacer tal cosa solo con SQL. Necesitaría de otro lenguaje que ejecute una función cada hora. Por ejemplo con PHP.
Me escribes desde un paraíso ideal para desconectar y perderse. Qué envidia. Un saludo!!
Para Ejecutar una función cada cierto tiempo Juan lo podrías hacer creando un evento, te dejo el enlace de la documentaciñon oficial de MySQL donde lo trata dev.mysql.com/doc/refman/5.7/en/events-overview.html y un pequeño ejemplo de un evento creado por mi que se ejecuta cada semana.
DELIMITER $$
CREATE EVENT week_event
ON SCHEDULE EVERY 1 WEEK STARTS CURRENT_TIMESTAMP -- Inicio del evento.
COMMENT 'Cada semana se dispara el procedimiento pr_sum_punt' -- Comentario aclaratorio.
DO
BEGIN
CALL pr_sum_punt();
END $$ -- Fin del evento
DELIMITER;
Gracias
Hola amigos, yo quisiera que al modificar la tabla, la accion del trigger se ejecute luego de 30minutos, como consigo hacer eso?? gracias por sus respuestas.
eres grande Drake
mil gracias
Solo añadir una pequeña mejora para el procedimiento calcula_edad para que el año actual se calcule de forma automática y no quede fijado en el que se ponga de manera manual, como en el video en 2016:
....
DECLARE AGNO_ACTUAL INT DEFAULT YEAR(NOW());
....
Excelente, es justo lo q andaba buscando!!
Hola, gracias por tus cursos, me han ayudado mucho, gracias. porfavor si me puedes ayudar que tengo un problema no me aparece la opción ejecutar en la vista de estructura de los procedimientos. Gracias por todo un gran abrazo.
¿Estás trabajando con PHPMyAdmin? Si es así ¿qué versión tienes? Un saludo
Hola gracias por la preocupación.Si, trabajo con PHPMyAdmin y la versión es 4.6.5.2. Saludos.
Buenas Juan, habra curso de PotsgreSQL en un futuro ?
Es mi intención hacerlo, lo que no se es cuando lo podre hacer. Un saludo!!
muchas gracias por todo esto!!!!
Excellenteee videoooooo :) , muchas graciasss y sigaa asiiiiii :)
+Jose Suarez Gracias !! Un saludo
Muy bien tus videos.
Tengo una pregunta, puedo en una función o procedure incluir un select a una tabla para que me devuelva un valor dado un parámetro?
Lo estoy intentando y no lo consigo.
Gracias
SELECT * FROM nombredelaTabla Where nombredelCampo = parametroBuscado
Hola, Profesor
Cómo está?
He creado el siguiente procedimiento :
DELIMITER //
CREATE PROCEDURE CAL_EDAD ( AÑO_NACIMIENTO INT)
BEGIN
DECLARE AÑO_ACTUAL INT DEFAULT 2016;
DECLARE EDAD INT;
SET EDAD = AÑO_ACTUAL - AÑO_NACIMENTO;
SELECT EDAD;
END;//
DELIMITER ;
Se crea sin problemas, igual que en el video. Pero al ejecutarlo me sale un mensaje " Su consulta se ejecutó con éxito.
0 filas afectadas por la última sentencia del procedimiento." Y otro que dice " MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas)."
Por favor podría decirme por qué se puede está presentando ésto y no arroja ningún resultado ?
Muchas gracias
EXCELENTE EXCELENTE, QUEDA UNA CLASE!!!
Profesor, luego de un mes de trabajar a la par de sus tutoriales y de haber creado una tabla he llegado al momento donde debo exportar una tabla, pero quisiera exportarla por ejemplo en PDF pero ordenada, es decir. He utilizado la sentencia "order by..." Pero al momento de exportar la tabla se muestra en PDF con el orden de columnas predeterminado (el mismo orden en el que había creado las columnas). Existe algún modo? Muchas gracias!
+Emanuel Vald Hola !! Que yo conozca no. Order by es para ordenar registros pero no los campos dela tabla. Un saludo!!
Profesor disculpe tengo una duda : creo un trigger que almacena las actualziaciones que haga en una tabla diferente osea me refiero a los datos antiguos y los nuevos, ok, hasta ahi funciona bien , pero cuando creo un procedimiento que haga una actualizacion y lo utilizo , este no hace uso del trigger y no almacena los datos antihuos y nuevos en la tabla donde debia almacenarse para conocer los cambios hechos , osea mejor dicho dese un procedimiento no hace caso al trigguer y me pregunto si hay alguna manera de solucionarlo :) .Espero que me haya entendido :)
+Jose Suarez Creo que te he entendido. ¿Y si haces un trigger con el código del procedimiento? Habrás visto en el vídeo que los trigger admiten declaraciónn de variables, estructuras de control de flujo etc... Un saludo
Confío que algún día te haré una donación.
primeramente felicitarle por sus tutoriales me han sido de utilidad, pero en este caso cuando voy a utilizar la palabra reservada declare no puede ejecutarse el procedimiento me indica que existe un error en la linea donde esta declare pero no especifica y el código es tal cual el del vídeo,pedirle por favor me ayude a resolver este problema, gracias
Profesor, ¿en este video creamos en primera un "procedimiento" y en segunda "un trigger" con estructura de procedimiento? Lo pregunto debido a que en la segunda parte no vi la clausula "Create Procedure" pero noté que era como una mezcla de ambos (por la estructura), ya que incluso el phpmyadmin lo guardó como trigger. Espero me haya dado entender.
Es solo un trigger, no usa ambas cosas. Pero imagina que llamas a un procedimiento que hace update, en ese caso el update dispara al trigger.
Hola, muy bien entendido, pero hay algo que o me entero, si yo quiero hacer el llamado desde la consola como lo hago, veo que al momento de ejecutar te sale algo con @ que segun se es el declarado por el usuario. Ose escribo.. call calcula edad (1985);
?
Exacto, tienes que introducir CALCULA_EDAD(1985)
en win7 que comando se aplica para desde php usando sql cambiar configuraciones del servidor especialmente en la tarjeta de audio del servidor
hola tengo el siguiente problema : "un mecanismo el cual en caso de ingresar un estudiante con rut incorrecto, no permita que este se guarde (o al menos no permita que se mantenga) en la base de datos."
he intentado generarcondiciones con if pero no lo he logrado, alguna sugerencia???
Documentación
#1235 - Esta versión de MariaDB no soporta todavia 'multiple triggers with the same action time and event for one table'
En mysql workbench no funciona(creo que se hace de otra manera) pero en phpMyAdmin si porque será?
Hola fue, lamentablemente no pude realizar el trigger ya que me sale este mensaje ¿Y ahora que? :'v ¿No hay alguna documentación como la api de java pero para especificamente para este gestor MYSQL.
#1235 - Esta versión de MariaDB no soporta todavia 'multiple triggers with the same action time and event for one table'
No entendi bien el delimiter, a lo que entendi es para que el programa sepa que termino el codigo y siga todo lineal
Buenas tardes profesor, al intentar crear el ultimo trigger el cual permite que el precio de un producto no sea disparatado (no valga menos de 0, o mas de 1000) me sale un error el cual dice #1235 - Esta versión de MariaDB no soporta todavia 'multiple triggers with the same action time and event for one table', usted sabe por qué me podría suceder esto si al yo haber creado los anteriores triggers del curso, nunca me ocurrió ningún problema?, gracias
DEBES BORRAR EL TRIGGER (BEFORE UPDATE) QUE TIENES EN LA TABLA PRODUCTOS, NO PUEDES TENER 2 TRIGGERS CON EL MISMO EVENTO (BEFORE UPDATE)
Gracias por tu oportuna respuesta!
HOLA QUE TAL QUERIDO PROFESOR, UNA CONSULTA POR FAVOR, HASTA CUANTOS TRIGGER PUEDE TENER UNA TABLA?? PORQUE EN ESTE CURSO HICIMOS 3 ANTES DE ESTE Y VEO QUE USTED ELIMINO UN TRIGGER DE LA TABLA PRODUCTOS.
PORQUE AL HACER ESTE TRIGGER ME SALE ESTE ERROR PROFE
consulta SQL:
CREATE TRIGGER REVISA_PRECIO_BU BEFORE UPDATE ON PRODUCTOS FOR EACH ROW
BEGIN
IF(NEW.PRECIO1000) THEN
SET NEW.PRECIO=1000;
END IF;
END;
MySQL ha dicho: Documentación
#1235 - This version of MariaDB doesn't yet support 'multiple triggers with the same action time and event for one table'
No puedes tener dos triggers con la misma acción realizando cosas diferentes
#1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
Query:
DELIMITER $$
CREATE TRIGGER REVISA_PRECIO_BU BEFORE UPDATE ON PRODUCTOS FOR EACH ROW
BEGIN
IF(NEW.PRECIO1000) THEN SET NEW.PRECIO=1000;
END IF;
END; $$
DELIMITER;
Que hago ? :(
+Dionisio Barboza Borrar el otro trigger que debes tener también con Before Update. No pudes tener en una misma tabla dos trigger que realizan acciones diferentes bajo el mismo evento (before update) ¿A cuál de los dos haría caso? Un saludo
Muchas gracias!
En un rato pruebo.
Juan una pregunta, CURL en pocas palabras es la librería que se usa para hacer peticiones HTTP a otro servidor desde PHP no?
Gracias casi me rompo la cabeza buscando el error
Vengo del 2020 y si los mercados de petróleo hubieran visto este tutorial a tiempo podrían haber evitado que el barril cueste -38 DÓLARES!!
XDDDD que tiene que ver eso??xdndkajs
Tres tristes triggers.
--En sql server 2012:
CREATE TRIGGER REVISA_PRECIO_BU ON PRODUCTOS
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO PRODUCTOS (CÓDIGOARTÍCULO, SECCIÓN, NOMBREARTÍCULO, PRECIO, FECHA, IMPORTADO, PAÍSDEORIGEN, FOTO)
SELECT i.CÓDIGOARTÍCULO, i.SECCIÓN, i.NOMBREARTÍCULO, i.PRECIO, i.FECHA, i.IMPORTADO, i.PAÍSDEORIGEN, i.FOTO
FROM inserted AS i WHERE PRECIO>1000
END
GO
--Gracias profe
Funciona aunque no se si sea el correcto al no haber BEFORE, en sql server aparece AFTER, FOR Y INSTEAD OF.