Muchas gracias PildorasInformaticas. Estoy estudiando un libro de SQL donde llegue a la parte de triggers, pero la sintaxis me tiraba errores y no se creaban, me vi los 3 vídeos de triggers y me funciono todo. Yo también uso phpmyadmin y al ver como armabas el código lo pude corregir, desde ya muchas gracias, saludos desde argentina. ;D
@@pildorasinformaticas gracias por todo. Consulta, por que es after cuadno se borra y no before. Si es after de donde saca los datos si ya estan borrados? que pasa si pongo before?
@@Aaa-x6f3z entendí muy bien lo que explicó. Lo que no estoy de acuerdo es en insistir en llamar gris a algo que es blanco o negro. Es decir, no me parece bien que a pesar de enseñarnos que no existe la modificación de los triggers, y que sólo se pueden destruir y volver a crear, insista en llamar a esto modificar. Sólo es un asunto de precisión del lenguaje, y llamar las cosas por su nombre siempre es más claro.
En SQL SERVER: Ejemplo en Trigger de elminación: CREATE TRIGGER ELIMIPROD_AD ON PRODUCTOS AFTER DELETE AS BEGIN SET NOCOUNT ON INSERT INTO PROD_ELIMINADOS (C_ART, NOMBRE, PAIS_ORIGEN, PRECIO, SECCION) SELECT CODIGO_ARTICULO, NOMBRE_ARTICULO, PAISDEORIGEN, PRECIO, SECCION FROM DELETED END Ejemplo en modificación de Trigger: CREATE TRIGGER ELIMIPROD_AD ON PRODUCTOS AFTER DELETE AS BEGIN SET NOCOUNT ON INSERT INTO PROD_ELIMINADOS (C_ART, NOMBRE, PAIS_ORIGEN, PRECIO, SECCION, USUARIO, FECHA_MODIF) SELECT CODIGO_ARTICULO, NOMBRE_ARTICULO, PAISDEORIGEN, PRECIO, SECCION, CURRENT_USER, GETDATE () FROM DELETED END
Supongo que si no quieres andar con muchas tablas, siempre puedes crear una genérica con un booleano que te indique si es un registro por eliminación o por actualización de registro. Claro que dependerá de las necesidades de cada desarrollo. En cualquier caso, genial curso!
Hola, tengo una duda y es si en vez de la instrucción AFTER no deberia ir BEFORE ya que se deberia copiar el registro antes de eliminarlo. No se si estoy en algun error. Gracias
Realice el trigger como lo muestras, sin embargo, no me funciono. Hice el cambio de "After Delete" a "Before Delete" y ya todo fluyo. Honestamente no entiendo porque te funciono, si según recuerdo en video anteriores nos dices que si el trigger se dispara después de la eliminación entonces no tendrá un registro que almacenar (según recuerdo).
Me quedó la duda si no debería de ser BEFORE DELETE la instrucción en vez de AFTER DELETE (pensé que no iba a funcionar pero funcionó igual xD). Esto implica que, de algún modo, al borrar un registro de una tabla sí hubo posibilidad de recuperar la información????
Muy buenos videos felicidades. Siempre le pongo me gusta y dejo correr los anuncios. Hoy tengo una pregunta. Para el trigger de eliminar, parece que funciona todo bien. Pero, no debería guardar el registro en la tabla BEFORE de eliminar el registro? Tu le pones AFTER. Lo elimina y después crea el registro en la tabla?
Gracias por el comentario. Hace tiempo que grabé estos vídeos y no recuerdo qué hice exactamente. Pero si se trata de eliminar, efectivamente primero deberíamos guardar el registro en la tabla y después eliminar. Si tengo un rato revisaré el vídeo a ver si todo es correcto o cometí algún error. Un saludo!!
JUAN. AUNQUE ESTOY VIENDO UN DETALLE. ME APLICA EL TRIGGER PERO EN LA TABALA DE RESPALDO ME REFLEJA DOS VECES EL ARTICULO ELIMINADO??? DOND ESTA EL ERROR. ESTA ES LA INSTRUCCION CUANDO CREE EL TRIGGERS: CREATE TRIGGER PRODELIM_BD BEFORE DELETE ON productos FOR EACH ROW INSERT INTO prod_eliminados (C_ART,NOMBRE,PAÍS_ORIGEN,PRECIO,SECCIÓN) VALUES (OLD.CÓDIGOARTÍCULO,OLD.NOMBREARTÍCULO,OLD.PAÍSDEORIGEN,OLD.PRECIO,OLD.SECCIÓN)
Una pregunta: En el minuo 10:14 el AR41 me lo eliminó de la tabla productos pero no me apareció en mi triger, luego intenté eliminar el AR01 y este si me apareció en el triger y así con todos los que eliminaba pero no entiendo porqué no me eliminó en primer lugar el AR41, la sintaxis todo lo verifiqué 2 veces y están bien pero no haya solución de porque pasó eso
aaaaaa Encontré el error, pasa que cuándo creamos la tabla prod_eliminados en estructura los campos tienes varchar de distintos valores. y es por ello que me eliminaba el campo pero no lo registraba en mi tabla produc_eliminados. Para los que tengan mi mismo error hagan lo siguiente. Simplemente vayan a prod_eliminados a estructuras y diríjanse al campo NOMBRE y cambien la longitud del varchar en 50 (por exagerar)
Profe pones una columna que ponda actualizado o eliminado y ya esta y lo tienes todo en la misma tabla... Una idea para no tener una pila de tablas por la BBDD. saludos.
primeramente felicitarte por tu gran labor y muchas gracias por ello.Lo que no me gusta mucho es que hay que hacer una tabla independiente para cada trigger ,imagínate una base de datos de 40 tablas ,si haría el doble de grande. no tienes algún video explicando lo que incriptacion de base de datos en sql ?
Tengo una duda, en caso yo quisiera mandarle parámetros a un procedimiento almacenado desde un trigger after insert, tengo que usar alguna nomenclatura ya que estoy usando mi call Y mis pariables las estoy declarando arriba usando New.parametro1 precedure(parámetro1, parametro2). El error que me vota el procederé es de 1329 zero row afectados pero sin embargo cuando ejecutó el procedure desde el phpmyadmin le paso los parámetros y se ejecuta con normalidad pero desde el trigger no
Muy buenos videos. Una consulta, es la misma sintaxis para sql informix? Ya que estoy intentando realizar el procedimiento, pero no logro tener exito. Gracias!
Hola Juan en el minuto 19:00 hablas de IF EXIST pero primero dices (o por lo menos asi lo entendi) que si no existe el TRIGGER con ese nombre o no existe del todo dara un error. Seguidamente dices que con el IF EXIST tanto si existe como si no el procedera a realizar esta accion. No me queda muy claro, con el IF EXIST si lo tomo del ingles significa que es una condicion necesaria el que exista no es asi??
Hola !! No recuerdo exactamente que dije en el vídeo (si tengo un rato lo repaso no vaya a ser que haya cometido yo un error), pero una cosa es que no exista el trigger, y otra diferente es que no exista una tabla con la que trabaja el trigger. La instrucción IF EXIST se utiliza para preguntar "si existe" una tabla para operar con ella. Lo miraré. Un saludo!!
En la última parte de tu pregunta tienes la respuesta a la propia pregunta. Es eso, un condicional. Si no existe pasa de largo esa instrucción e intenta ejecutar la siguiente.
No entiendo por qué no es BEFORE DELETE. Se supone que cuando lo borras, ya no está, cómo lo copia entonces? Si es before delete, se lleva a la nueva tabla y luego se borra no? Gracias!
un after te sirve para verificar si una accion se puede ejecutar,es decir,una comprobacion.el after te permite despues de realizar la accion ya sea delete,update o insert almacenar una informacion por ejemplo
Lo que pasa es que no se puede almacenar antes de eliminar,por que si almacenas y no eliminas,no tiene sentido.cuando eliminas la acción ya es un hecho y de esa forma se ejecuta el trigger
Hola! Me acabo de suscribir a este canal y es increíble la forma tan clara de explicar. Me gustaría hacer una consulta. ¿Cómo sería la implementación de las operaciones de BEFORE en SQL Server (por ejemplo BEFORE UPDATE)? Por lo que veo no se puede implementar directamente. Gracias!
Excelente trabajo ing. Juan!!. Quisiera preguntarle Que es una bitacora y como se hace una? Ojala pueda responder a mi pregunta, de todas maneras muchas gracias por los videostutoriales.
+Osmar A. Hola !! Si hablamos de bitácora digital, es una especie de blog. El decirte cómo se hace me llevaría un curso de 60 vídeos. Puedes utilizar un CMS como WordPress para crearlo. Un saludo
Como hago para visualizar la opcion de los disparadores en el panel Izquierdo? solo puedo visualizar las tablas. Cuando selecciono la opcion disparadores ded la parte superior me aparece No hay disparadores para mostrar a pesar que ya los he creado
Si pues, lo revisare nuevamente, gracias por tus cursos eres el mejor canal para aprender ya hice el curso de Javascript y estoy terminando este de SQL, voy paralelo con Java teniendo pendiente llevar PHP y Android. Un placer de verdad seguir tus videos siga asi profesor
Hola buenas tardes. Excelente y gracia por mostrar tus conocimientos. Una porque el ( * ) cuando quieres hacer esta función: SELECT * FROM PRODUCTOS WHERE SECCIÓN="DEPORTES" OR SECCIÓN="CERÁMICA" ORDER BY SECCIÓN DESC y en las de más no se coloca el * que significa??? Gracias quedo al pendiente
Muy bien lo de los triggers, y aunque ya los videos llevan un buen tiempo, me surge un problema con los triggers, y es que yo quiero actualizar la misma tabla que dispara el triggers, esto porque es necesario?, secillo, tengo una tabla de prestamos, y quiero hacer calculos al insertar ciertos datos, por ejemplo, yo inserto el monto del prestamo, y la tasa de interes, y despues de agregar ese registro quiero hacer los calculos de intereses, pero no he logrado hacerlo, quizas es un poco más avanzado lo que requiero hacer, pero en fin, si obtengo repuesta será genial, sino pue sme queda seguir investigando. Saludos!!
profesor Juan, como siempre muy agradecido y felicitaciones porque ya somos más de 120.000 alumnos suscritos que hemos aprendido de tus excelentes enseñanzas. Tengo una consulta espero que por favor me puedas colaborar, necesito hacer un trigger a una tabla donde se almacene: el usuario, la fecha y dos campos adicionales, el problema que tengo es que el usuario no es el "current user" sino que es el que se ingresa a través de un formulario de login pienso, que este usuario se debería ingresar como parámetro. ¿Es posible crear un trigger donde un campo ingresa de esta forma?
Sí, es posible. Pero esto se saldría del ámbito de este curso porque entran en juego formularios. Habría que ver cómo está construido ese formulario y cómo y cuando se guarda la información en la tabla. Lo que está claro es que el trigger debería ser AI (After Insert). Un saludo!!
Profesor donde puedo encontrar información al respecto ya que la unica opción que veo es Insertar los registros en la tabla por medio de una sentencia SQL y no por trigger
En mi curso de PHP se explica cómo insertar registros en una BBDD MySql desde formularios web. Busca en mis listas de reproducción el curso de PHP. Un saludo!!
Hola, Juan! Si en la tabla productos el campo precio es de tipo decimal(10,4) y la tabla prod_eliminados el campo precio es entero 11, ¿da problemas cuando se borra la primera tabla y se guardan, antes de ser borrados, los datos en la segunda tabla o al pasar de decimal a entero trunca el número sin problemas? Lo pregunto por que al ejecutar la sentencia: DELETE from productos where CÓDIGOARTÍCULO = 'AR41'; Me sale el siguiente error : #1265 - Datos truncados para columna 'NOMBRE' en la línea 1 Y repasando los tipos me he dado cuenta que todos los campo de la segunda tabla son varchar más grandes que el tipo varchar de la primera tabla pero el campo precio ocurre lo expuesto arriba. Un saludo y gracias!
Hola juan, de antemano te felicito por tus excelentes cursos, pero tengo una gran duda, ¡cotejamiento! o como se llame, tengo muchos problemas al realizar las consultas, especialmente la creación de triggers, me da error y deduje que es por NEW.[campo] y OLD.[campo] , no se si sea por que las tablas están acentuadas, en fin, me gustaría aclarar eso..
Me imagino que te refieres a que se conservan los registros de las tablas donde realiza la acción el trigger. Y pues en este caso lo que sucede es que estas eliminando y volviendo a crear la configuracion del trigger pero no el contenido de la tabla donde el trigger ejecuta la accion. Espero sea esa tu duda. Saludos
lo que no me. queda claro por que se ejecuta después de la eliminación del registro el trigger si ya no existe información en la tabla si lo vemos de manera lógica. ya me confundió pero buen tutorial estimado.
Yo creo que funcionaría de todas maneras. Es decir con After se usa porque después de eliminar un registro entonces el Trigger ya sabe cuál eliminó y entonces puede ejecutar la acción de registrar ESO que se eliminó en la tabla de productos eliminados. un saludo
pues para existe el old.nombrecampo y el new.nombrecampo.. con old, haces referencia al valor antiguo (el que estaba allí) y new al valor nuevo (al actual), eso lo explicó desde el primer video de triggers.
Genial, pero se te "olvida" comentar que tras modificar una tabla para que tenga datos adicionales, el "jefe" que te lo pide espera que "mágicamente" los datos que estarán en NULL en los registros ya existentes, espera que contengan los datos que se supone deben contener. Aprovecho para preguntar al experto, donde venden ese teclado con la "tecla" que todos los jefes afirman que existe, ya que siempre que te piden algo por surrealista que sea según ellos es solo "darle a la tecla"
Alguien sabe como solucionar el error "Error Code: 1136 Column count doesn't match value count at row 1" Me aprece cuando quiero hacer el Update Productos Set Precio=Precio where codigoarticulo="AR09"
Este es el mejor canal para aprender informática!!
Muchas gracias PildorasInformaticas. Estoy estudiando un libro de SQL donde llegue a la parte de triggers, pero la sintaxis me tiraba errores y no se creaban, me vi los 3 vídeos de triggers y me funciono todo. Yo también uso phpmyadmin y al ver como armabas el código lo pude corregir, desde ya muchas gracias, saludos desde argentina. ;D
El unico curso donde encuentro la informacion exacta, muy bien pildoras, hay muchos cursos que no explican la informacion correcta, buen curso.
Gracias por el comentario. Un saludo!
@@pildorasinformaticas gracias por todo. Consulta, por que es after cuadno se borra y no before. Si es after de donde saca los datos si ya estan borrados? que pasa si pongo before?
Excelentes vídeos, excesivamente didácticos!. Muchas gracias. Lo hice con BEFORE.
también pensé hacerlo así porque creo yo los datos se tienen que guardar antes de eliminar
MUY BIEN EXPLICADO!!!! Y FÁCIL DE ENTENDER
me encantan los triggers xD. profeee!! usted es lo maximo!
Como me encanta pildorasinfromaticas, buen video Juan
21:40 Tal vez soy muy cuadrado, pero para mí, Eliminar y volver a crear un trigger, no es modificarlo. Muy bueno el video.
Explicó que no que la sentencia ALTER TRIGGER no existe, Cómo modificarías tú un Trigger en MYSQL?
@@Aaa-x6f3z entendí muy bien lo que explicó. Lo que no estoy de acuerdo es en insistir en llamar gris a algo que es blanco o negro. Es decir, no me parece bien que a pesar de enseñarnos que no existe la modificación de los triggers, y que sólo se pueden destruir y volver a crear, insista en llamar a esto modificar. Sólo es un asunto de precisión del lenguaje, y llamar las cosas por su nombre siempre es más claro.
En SQL SERVER:
Ejemplo en Trigger de elminación:
CREATE TRIGGER ELIMIPROD_AD ON PRODUCTOS AFTER DELETE AS
BEGIN SET NOCOUNT ON
INSERT INTO PROD_ELIMINADOS (C_ART, NOMBRE, PAIS_ORIGEN, PRECIO, SECCION)
SELECT CODIGO_ARTICULO, NOMBRE_ARTICULO, PAISDEORIGEN, PRECIO, SECCION FROM DELETED
END
Ejemplo en modificación de Trigger:
CREATE TRIGGER ELIMIPROD_AD ON PRODUCTOS AFTER DELETE AS
BEGIN SET NOCOUNT ON
INSERT INTO PROD_ELIMINADOS (C_ART, NOMBRE, PAIS_ORIGEN, PRECIO, SECCION, USUARIO, FECHA_MODIF)
SELECT CODIGO_ARTICULO, NOMBRE_ARTICULO, PAISDEORIGEN, PRECIO, SECCION, CURRENT_USER, GETDATE () FROM DELETED
END
MUY BUEN APORTE, DIOS TE BENDIGA!
muchas gracias, eres excelente, te estoy siguiendo en casi todos los cursos, no me falta sino seguirte hasta la casa para preguntarte personalmente...
jajajjaja
Que maravilla. Nuevo vídeo. Publicado hoy.
Fenominal ..mil gracias desde valencia
Supongo que si no quieres andar con muchas tablas, siempre puedes crear una genérica con un booleano que te indique si es un registro por eliminación o por actualización de registro. Claro que dependerá de las necesidades de cada desarrollo. En cualquier caso, genial curso!
Todo funcionó perfecto, MUCHAS GRACIAS!
Hola, tengo una duda y es si en vez de la instrucción AFTER no deberia ir BEFORE ya que se deberia copiar el registro antes de eliminarlo. No se si estoy en algun error. Gracias
Excelente !!! muchísimas gracias todo perfecto !!! 😄😉😊
muchas gracias....👐👐👐👐👐👐👐👐👐
Esperando el proximoo videoooo :) , asi como tambien espero el de java y de android , son muy buenos tus videoss :)
saludoss
+Jose Suarez Gracias !! Me alegro de que te gusten. Un saludo!!
GRACIAS... YA PUDE EJECUTAR ALGUNAS FUNCIONALIDADES
me as ayudado mucho gracias
Gracias Juan.
Realice el trigger como lo muestras, sin embargo, no me funciono. Hice el cambio de "After Delete" a "Before Delete" y ya todo fluyo. Honestamente no entiendo porque te funciono, si según recuerdo en video anteriores nos dices que si el trigger se dispara después de la eliminación entonces no tendrá un registro que almacenar (según recuerdo).
Excelente video Ing.
Tremendo Vídeo
Me quedó la duda si no debería de ser BEFORE DELETE la instrucción en vez de AFTER DELETE (pensé que no iba a funcionar pero funcionó igual xD). Esto implica que, de algún modo, al borrar un registro de una tabla sí hubo posibilidad de recuperar la información????
tengo la misma duda, para eso vine a comentario. @pildorasinformaticas ayuda pf!
buen video bro!!
+DevPantro Gracias !! Un saludo
Muy buenos videos felicidades. Siempre le pongo me gusta y dejo correr los anuncios. Hoy tengo una pregunta. Para el trigger de eliminar, parece que funciona todo bien. Pero, no debería guardar el registro en la tabla BEFORE de eliminar el registro? Tu le pones AFTER. Lo elimina y después crea el registro en la tabla?
Gracias por el comentario. Hace tiempo que grabé estos vídeos y no recuerdo qué hice exactamente. Pero si se trata de eliminar, efectivamente primero deberíamos guardar el registro en la tabla y después eliminar. Si tengo un rato revisaré el vídeo a ver si todo es correcto o cometí algún error. Un saludo!!
Javier Monchis me pregunto exactamente lo mismo amigo
@@pildorasinformaticas JUAN. COMO SIEMPRE EXCELENTE SU EXPLICACION. EN MI CASO LO HICE CON BEFORE Y FUNCIONO. PERO NO ME FUNCIONO CON AFTER
JUAN. AUNQUE ESTOY VIENDO UN DETALLE. ME APLICA EL TRIGGER PERO EN LA TABALA DE RESPALDO ME REFLEJA DOS VECES EL ARTICULO ELIMINADO??? DOND ESTA EL ERROR. ESTA ES LA INSTRUCCION CUANDO CREE EL TRIGGERS: CREATE TRIGGER PRODELIM_BD BEFORE DELETE ON productos FOR EACH ROW INSERT INTO prod_eliminados (C_ART,NOMBRE,PAÍS_ORIGEN,PRECIO,SECCIÓN) VALUES (OLD.CÓDIGOARTÍCULO,OLD.NOMBREARTÍCULO,OLD.PAÍSDEORIGEN,OLD.PRECIO,OLD.SECCIÓN)
te amo
el trigger no deberia ser before? para que pueda recuperar los datos antes de eliminarlos?
Una pregunta: En el minuo 10:14 el AR41 me lo eliminó de la tabla productos pero no me apareció en mi triger, luego intenté eliminar el AR01 y este si me apareció en el triger y así con todos los que eliminaba pero no entiendo porqué no me eliminó en primer lugar el AR41, la sintaxis todo lo verifiqué 2 veces y están bien pero no haya solución de porque pasó eso
aaaaaa Encontré el error, pasa que cuándo creamos la tabla prod_eliminados en estructura los campos tienes varchar de distintos valores. y es por ello que me eliminaba el campo pero no lo registraba en mi tabla produc_eliminados.
Para los que tengan mi mismo error hagan lo siguiente.
Simplemente vayan a prod_eliminados a estructuras y diríjanse al campo NOMBRE y cambien la longitud del varchar en 50 (por exagerar)
Profe pones una columna que ponda actualizado o eliminado y ya esta y lo tienes todo en la misma tabla... Una idea para no tener una pila de tablas por la BBDD.
saludos.
Al modificar un trigger se quedan almacenados los registros que estaban insertados en él o se borran debido a que se utiliza "DROP"?
Quedan almacenados :v
primeramente felicitarte por tu gran labor y muchas gracias por ello.Lo que no me gusta mucho es que hay que hacer una tabla independiente para cada trigger ,imagínate una base de datos de 40 tablas ,si haría el doble de grande. no tienes algún video explicando lo que incriptacion de base de datos en sql ?
Tengo una duda, en caso yo quisiera mandarle parámetros a un procedimiento almacenado desde un trigger after insert, tengo que usar alguna nomenclatura ya que estoy usando mi call
Y mis pariables las estoy declarando arriba usando New.parametro1 precedure(parámetro1, parametro2). El error que me vota el procederé es de 1329 zero row afectados pero sin embargo cuando ejecutó el procedure desde el phpmyadmin le paso los parámetros y se ejecuta con normalidad pero desde el trigger no
Muy buenos videos. Una consulta, es la misma sintaxis para sql informix? Ya que estoy intentando realizar el procedimiento, pero no logro tener exito. Gracias!
Hola Juan en el minuto 19:00 hablas de IF EXIST pero primero dices (o por lo menos asi lo entendi) que si no existe el TRIGGER con ese nombre o no existe del todo dara un error. Seguidamente dices que con el IF EXIST tanto si existe como si no el procedera a realizar esta accion. No me queda muy claro, con el IF EXIST si lo tomo del ingles significa que es una condicion necesaria el que exista no es asi??
Hola !! No recuerdo exactamente que dije en el vídeo (si tengo un rato lo repaso no vaya a ser que haya cometido yo un error), pero una cosa es que no exista el trigger, y otra diferente es que no exista una tabla con la que trabaja el trigger. La instrucción IF EXIST se utiliza para preguntar "si existe" una tabla para operar con ella. Lo miraré. Un saludo!!
En la última parte de tu pregunta tienes la respuesta a la propia pregunta. Es eso, un condicional. Si no existe pasa de largo esa instrucción e intenta ejecutar la siguiente.
No entiendo por qué no es BEFORE DELETE. Se supone que cuando lo borras, ya no está, cómo lo copia entonces?
Si es before delete, se lleva a la nueva tabla y luego se borra no?
Gracias!
'Que acabas de ver Lisa?' xd
también tuve esa duda
x3 , no encuentro diferencia entre after y before si lo borra de cualquier modo.
un after te sirve para verificar si una accion se puede ejecutar,es decir,una comprobacion.el after te permite despues de realizar la accion ya sea delete,update o insert almacenar una informacion por ejemplo
Lo que pasa es que no se puede almacenar antes de eliminar,por que si almacenas y no eliminas,no tiene sentido.cuando eliminas la acción ya es un hecho y de esa forma se ejecuta el trigger
Hola! Me acabo de suscribir a este canal y es increíble la forma tan clara de explicar. Me gustaría hacer una consulta. ¿Cómo sería la implementación de las operaciones de BEFORE en SQL Server (por ejemplo BEFORE UPDATE)? Por lo que veo no se puede implementar directamente. Gracias!
Excelente trabajo ing. Juan!!.
Quisiera preguntarle
Que es una bitacora y como se hace una?
Ojala pueda responder a mi pregunta, de todas maneras muchas gracias por los videostutoriales.
+Osmar A. Hola !! Si hablamos de bitácora digital, es una especie de blog. El decirte cómo se hace me llevaría un curso de 60 vídeos. Puedes utilizar un CMS como WordPress para crearlo. Un saludo
Gracias Ing!!!!!!
Como hago para visualizar la opcion de los disparadores en el panel Izquierdo? solo puedo visualizar las tablas. Cuando selecciono la opcion disparadores ded la parte superior me aparece No hay disparadores para mostrar a pesar que ya los he creado
Pues la verdad no sabría decirte. El mensaje es claro. No se si se te ha olvidado algún paso a la hora de crearlos o no te funciona bien phpMyAdmin.
Si pues, lo revisare nuevamente, gracias por tus cursos eres el mejor canal para aprender ya hice el curso de Javascript y estoy terminando este de SQL, voy paralelo con Java teniendo pendiente llevar PHP y Android. Un placer de verdad seguir tus videos siga asi profesor
Hola buenas tardes. Excelente y gracia por mostrar tus conocimientos. Una porque el ( * ) cuando quieres hacer esta función: SELECT * FROM PRODUCTOS WHERE SECCIÓN="DEPORTES" OR SECCIÓN="CERÁMICA" ORDER BY SECCIÓN DESC y en las de más no se coloca el * que significa??? Gracias quedo al pendiente
+Daniel Sanchez El * significa que quieres incluir en la consulta todos los campos de la tabla. Un saludo
Muy bien lo de los triggers, y aunque ya los videos llevan un buen tiempo, me surge un problema con los triggers, y es que yo quiero actualizar la misma tabla que dispara el triggers, esto porque es necesario?, secillo, tengo una tabla de prestamos, y quiero hacer calculos al insertar ciertos datos, por ejemplo, yo inserto el monto del prestamo, y la tasa de interes, y despues de agregar ese registro quiero hacer los calculos de intereses, pero no he logrado hacerlo, quizas es un poco más avanzado lo que requiero hacer, pero en fin, si obtengo repuesta será genial, sino pue sme queda seguir investigando. Saludos!!
En pgadmin no funciona ningun trigger, me marca error donde pusiste insert into y no se como arreglarlo
profesor Juan, como siempre muy agradecido y felicitaciones porque ya somos más de 120.000 alumnos suscritos que hemos aprendido de tus excelentes enseñanzas. Tengo una consulta espero que por favor me puedas colaborar, necesito hacer un trigger a una tabla donde se almacene: el usuario, la fecha y dos campos adicionales, el problema que tengo es que el usuario no es el "current user" sino que es el que se ingresa a través de un formulario de login pienso, que este usuario se debería ingresar como parámetro. ¿Es posible crear un trigger donde un campo ingresa de esta forma?
Sí, es posible. Pero esto se saldría del ámbito de este curso porque entran en juego formularios. Habría que ver cómo está construido ese formulario y cómo y cuando se guarda la información en la tabla. Lo que está claro es que el trigger debería ser AI (After Insert). Un saludo!!
Profesor donde puedo encontrar información al respecto ya que la unica opción que veo es Insertar los registros en la tabla por medio de una sentencia SQL y no por trigger
En mi curso de PHP se explica cómo insertar registros en una BBDD MySql desde formularios web. Busca en mis listas de reproducción el curso de PHP. Un saludo!!
Hola, Juan!
Si en la tabla productos el campo precio es de tipo decimal(10,4) y la tabla prod_eliminados el campo precio es entero 11, ¿da problemas cuando se borra la primera tabla y se guardan, antes de ser borrados, los datos en la segunda tabla o al pasar de decimal a entero trunca el número sin problemas?
Lo pregunto por que al ejecutar la sentencia:
DELETE from productos where CÓDIGOARTÍCULO = 'AR41';
Me sale el siguiente error :
#1265 - Datos truncados para columna 'NOMBRE' en la línea 1
Y repasando los tipos me he dado cuenta que todos los campo de la segunda tabla son varchar más grandes que el tipo varchar de la primera tabla pero el campo precio ocurre lo expuesto arriba.
Un saludo y gracias!
Claro, al ser el tipo de datos entero en la segunda tabla, truncará los datos decimales que allí se guarden. Un saludo!!
Hola juan, de antemano te felicito por tus excelentes cursos, pero tengo una gran duda, ¡cotejamiento! o como se llame, tengo muchos problemas al realizar las consultas, especialmente la creación de triggers, me da error y deduje que es por NEW.[campo] y OLD.[campo] , no se si sea por que las tablas están acentuadas, en fin, me gustaría aclarar eso..
Hola!! Si tienes acentuadas tablas, campos etc, el cotejamiento (juego de caracteres) que debes escoger es utf-8. Un saludo!!
¿Cómo se pone ese menú en cascadad e la izquierda en WAMP 2.2?
saludos.
creo que te referís al phpmyadmin. En la esquina superior izquireda hay una flechita, esa te cierra y abre el panel explorador de tablas.
Hola, tengo una duda. ¿Por qué si se borra el trigger, se conserva el registro que ya tenía?
Me imagino que te refieres a que se conservan los registros de las tablas donde realiza la acción el trigger. Y pues en este caso lo que sucede es que estas eliminando y volviendo a crear la configuracion del trigger pero no el contenido de la tabla donde el trigger ejecuta la accion. Espero sea esa tu duda. Saludos
Quisiera saber como se hace en Acces.
access no admite los triggers
hay que ponerte una estatua en el ministerio de educación!!!!!
Saludos compañero, sería interesante sin pudieras hacer una serie de cursos sobre el sistema operativo Ubuntu, o del paquete de LibreOffice :)
+Gendric Morales Tomo nota de tu petición. Espero poder tener tiempo en el futuro. Un saludo!!
+pildorasinformaticas gracias de antemano
lo que no me. queda claro por que se ejecuta después de la eliminación del registro el trigger si ya no existe información en la tabla si lo vemos de manera lógica.
ya me confundió pero buen tutorial estimado.
Yo creo que funcionaría de todas maneras. Es decir con After se usa porque después de eliminar un registro entonces el Trigger ya sabe cuál eliminó y entonces puede ejecutar la acción de registrar ESO que se eliminó en la tabla de productos eliminados. un saludo
pues para existe el old.nombrecampo y el new.nombrecampo.. con old, haces referencia al valor antiguo (el que estaba allí) y new al valor nuevo (al actual), eso lo explicó desde el primer video de triggers.
EN sql server si existe alter trigger
alguien me podria pasar la base de datos utilizada en el video??
Boa tarde, preciso fazer uma trigger que ao incluir dados na tabela "prodvdmat" vai na tabela de entrada e pesquisa se tem o registro igual se tive atualiza(update) se não achar inclui um registro novo
CREATE DATABASE IF NOT EXISTS `bailledados` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `bailledados`;
-- --------------------------------------------------------
--
-- Estrutura da tabela `entradarm`
--
CREATE TABLE IF NOT EXISTS `entradarm` (
`codEntra` int(11) NOT NULL AUTO_INCREMENT,
`codVendedor` int(11) NOT NULL DEFAULT '0',
`codArmar` int(11) NOT NULL DEFAULT '0',
`quantidade` int(11) NOT NULL DEFAULT '0',
`valor` decimal(10,2) NOT NULL DEFAULT '0.00',
PRIMARY KEY (`codEntra`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT AUTO_INCREMENT=5 ;
--
-- Extraindo dados da tabela `entradarm`
--
INSERT INTO `entradarm` (`codEntra`, `codVendedor`, `codArmar`, `quantidade`, `valor`) VALUES
(1, 1, 1, 6, '21.90'),
(2, 5, 3, 5, '10.00'),
(3, 1, 1, 2, '10.00'),
(4, 0, 0, 0, '0.00');
-- --------------------------------------------------------
--
-- Estrutura da tabela `prodvdmat`
--
CREATE TABLE IF NOT EXISTS `prodvdmat` (
`codPrdvdmat` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
`codVendedor` int(11) NOT NULL,
`codArmar` int(11) NOT NULL,
`quantidade` int(11) NOT NULL,
`valor` decimal(10,2) NOT NULL,
`datacompra` datetime NOT NULL,
PRIMARY KEY (`codPrdvdmat`),
KEY `FK_prodvdmat_codVendedor` (`codVendedor`),
KEY `FK_prodvdmat_codArmar` (`codArmar`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;
--
-- Extraindo dados da tabela `prodvdmat`
--
INSERT INTO `prodvdmat` (`codPrdvdmat`, `codVendedor`, `codArmar`, `quantidade`, `valor`, `datacompra`) VALUES
(0000000004, 5, 5, 1, '10.80', '2018-11-25 00:00:00'),
(0000000005, 5, 6, 1, '19.80', '2018-11-25 00:00:00'),
(0000000006, 6, 7, 6, '89.40', '2018-11-25 00:00:00'),
(0000000007, 6, 8, 6, '6.00', '2018-11-25 00:00:00'),
(0000000008, 9, 9, 1, '24.90', '2018-10-21 00:00:00'),
(0000000012, 1, 1, 4, '11.90', '2018-11-09 00:00:00'),
(0000000013, 4, 4, 2, '5.20', '2018-11-25 00:00:00'),
(0000000014, 5, 3, 5, '10.00', '2018-12-15 00:00:00'),
(0000000015, 5, 3, 2, '10.00', '2019-01-09 00:00:00'),
(0000000017, 1, 1, 2, '5.00', '2019-01-09 00:00:00');
--
-- Acionadores `prodvdmat`
--
DROP TRIGGER IF EXISTS `trg_entradarm`;
DELIMITER //
CREATE TRIGGER `trg_entradarm` BEFORE INSERT ON `prodvdmat`
FOR EACH ROW BEGIN
declare codV int;
declare codA int;
select codVendedor codArmar INTO codV, codA from prodvdmat;
IF (codV new.codVendedor and codA new.codArmar) then
insert into entradarm(codVendedor, codArmar, quantidade, valor) values (new.codVendedor, new.codArmar, new.quantidade, new.valor);
else
UPDATE entradarm SET quantidade = quantidade + new.Quantidade, valor = valor + new.valor WHERE codVendedor = new.codVendedor and codArmar = new.codArmar;
end if;
END
//
DELIMITER ;
--
-- Constraints for dumped tables
--
--
-- Limitadores para a tabela `prodvdmat`
--
ALTER TABLE `prodvdmat`
ADD CONSTRAINT `FK_prodvdmat_codArmar` FOREIGN KEY (`codArmar`) REFERENCES `armarinhos` (`codArmar`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_prodvdmat_codVendedor` FOREIGN KEY (`codVendedor`) REFERENCES `vendedores` (`codVendedor`);
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Genial, pero se te "olvida" comentar que tras modificar una tabla para que tenga datos adicionales, el "jefe" que te lo pide espera que "mágicamente" los datos que estarán en NULL en los registros ya existentes, espera que contengan los datos que se supone deben contener.
Aprovecho para preguntar al experto, donde venden ese teclado con la "tecla" que todos los jefes afirman que existe, ya que siempre que te piden algo por surrealista que sea según ellos es solo "darle a la tecla"
Buena pregunta... No lo se
Alguien sabe como solucionar el error "Error Code: 1136 Column count doesn't match value count at row 1" Me aprece cuando quiero hacer el Update Productos Set Precio=Precio where codigoarticulo="AR09"
Revisa los tipos de variables