Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Novato!! usando un trigger depues de algo

Estas en el tema de Novato!! usando un trigger depues de algo en el foro de Mysql en Foros del Web. Hola chicos se que el titulo del post es bantante desubicador pero la verdad me he dado cuenta que se bastante de programación pero poco ...
  #1 (permalink)  
Antiguo 14/12/2013, 20:45
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Novato!! usando un trigger depues de algo

Hola chicos se que el titulo del post es bantante desubicador pero la verdad me he dado cuenta que se bastante de programación pero poco en BD asi que quiero aprender y pues bueno estoy dispuesto a los regaños que yo doy cuando enseño :) .

Ahora como dijo el dermatologo "Vamos al grano":

Tengo un problema con unos datos mal insertados o mas bn que no se insertaron con la programción.: Cada usuario que se registre debe tambien registrarse en una tabla que se llama catidades! bn pues hace poco me di de cuenta que unos pocos de entre unos miles no estan tambien registrados en la tabla cantidades y pues yo sin proble lo soluciono con programación ese error pero NO QUIERO debo aprender más de MySql por que lo subestime :( . Se puede tambien hacer programación ahi.

Primero como hacer esto en mysql: Se hace una consulta de todos los usuarios y por cada usuario se verifica que su id este tambien en la tabla Cantidades, si no esta resgistrado entonces que dispare un trigger que lo inserte ahi en Cantidades osea el id.



claro si eso se púede hacer :D
  #2 (permalink)  
Antiguo 15/12/2013, 05:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Novato!! usando un trigger depues de algo

Parece que quieres hacer dos cosas:
1) corregir los fallos ya existentes, es decir, las ausencias de usuario en Cantidades. Añadir el cod de usuario en el campo usuario cuando no exista en cantidades será fácil hacerlo con una consulta de inserción con subconsulta, pero nada nos dices de si hay más campos en Cantidades, y si basta con añadir para esos casos el cod de usuario que falte. Si es así, no le veo mucho sentido a la tabla Cantidades, pues parece que solo habrá un cod usuario único por cada usuario y nada más, con una relación, parece, de uno a uno.

2) Inmediatamente después de esa inserción hay que crear un trigger en el que después de añadir un nuevo usuario en la tabla usuario, inserte un nuevo registro en la tabla Cantidades con su cod en el campo usuario. Eso lo haces con un trigger y ya puedes olvidarte porque la base lo hará cada vez que añadas un usuario nuevo. Pero no nos dices si también hay que borrarlos cuando se eliminen, porque creo que actualizarlo no querrás, tratándose de un identificador.

Deberías aclararnos más sobre la naturaleza de esa tabla Cantidades y su función, sus campos y sus relaciones para poder orientarte mejor.
  #3 (permalink)  
Antiguo 15/12/2013, 09:31
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Novato!! usando un trigger depues de algo

Solo una cosa a agregar a lo que dijo jurena:
Cita:
Pero no nos dices si también hay que borrarlos cuando se eliminen, porque creo que actualizarlo no querrás, tratándose de un identificador.
Esta parte no se hace con un trigger, se hace definiendo una clave foranea entre las dos tablas (cosa que deberias tener, y si no es asi, agregala cuanto antes) y luego especificando el comportamiento de la mismas (CASCADE, SET NULL, RESTRICT, ETC)
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #4 (permalink)  
Antiguo 16/12/2013, 13:30
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Novato!! usando un trigger depues de algo

Pues bueno en la tabla cantidades hay mas campos pero ya saben no siempre se muestra toda la informacion pero en cantidades irian por ejemplo las cantidades de respuestas que un usuarios da, las historias que el crea y cosas asi que tenga que ver con cantidades en general. Amm y lo que dices Jurena en donde apenas insertado un datos en la tabla usuario que se dispare otro trigger el cual tambien haga una inserción en Cantidades pues yo lo hize con programación.

Las tablas tienen llaves foraneas asi que no problem. Y si con solo insertar esos campos para mi ya es suficiente por que el resto seria unas actualizaciones faciles que se haran pues los mismo usuarios las ocacionaran :D
  #5 (permalink)  
Antiguo 16/12/2013, 14:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Novato!! usando un trigger depues de algo

Con esta consulta de inserción, los insertarás, aunque los demás campos estarán vacíos, claro
Código MySQL:
Ver original
  1. INSERT INTO cantidades (usuario) SELECT u.cod
  2. FROM usuario u
  3. LEFT JOIN cantidades c ON u.cod = c.usuario
  4. WHERE c.usuario IS NULL

¿Era eso lo que querías?
  #6 (permalink)  
Antiguo 17/12/2013, 19:49
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Novato!! usando un trigger depues de algo

ammm asi que ese es un trigger!! voy entendiendo :D osea que si digamos la tabla cantidades tubiera otro campo por ejemplo historias y que fuera solo una seria asi:
Código MySQL:
Ver original
  1. INSERT INTO cantidades (usuario, historia) SELECT u.cod
  2.     FROM usuario u
  3.     LEFT JOIN cantidades c ON u.cod = c.usuario, c.historia=1
  4.     WHERE c.usuario IS NULL

es una supocisión !! :D
  #7 (permalink)  
Antiguo 17/12/2013, 20:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Novato!! usando un trigger depues de algo

Cita:
Iniciado por sonickseven Ver Mensaje
ammm asi que ese es un trigger!! voy entendiendo :D osea que si digamos la tabla cantidades tubiera otro campo por ejemplo historias y que fuera solo una seria asi:
Código MySQL:
Ver original
  1. INSERT INTO cantidades (usuario, historia) SELECT u.cod
  2.     FROM usuario u
  3.     LEFT JOIN cantidades c ON u.cod = c.usuario, c.historia=1
  4.     WHERE c.usuario IS NULL

es una supocisión !! :D
No, eso no es un TRIGGER, es simplemente un INSERT INTO... SELECT...
Un trigger es una rutina programada (como un SP o SF) que se dispara sola ante un evento INSERT / UPDATE / DELETE sobre una tabla.
Como mínimo deberías leer el manual de referencia para entender lo que se denomina disparadores.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 18/12/2013, 02:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Novato!! usando un trigger depues de algo

sonickseven,
esa consulta no es un trigger, sino, como te han dicho, una consulta de inserción. Pensé que ya tenías el trigger (disparador) preparado y funcionando, y que solo necesitabas actualizar los datos que te faltaban, pues el trigger creará el registro al insertar uno nuevo ¿es así, no?, no para los que ya tenías, los viejos. Si no tienes resuelto lo del trigger, dinos y te ayudaremos a prepararlo en caso de dificultad, pero echa un vistazo a esos disparadores o triggers como concepto y también en MySQL, y prueba a hacer alguno para solucionar tu problema. Si no funciona como esperas, nos escribes y te orientaremos y ofreceremos el código que sepamos.
  #9 (permalink)  
Antiguo 19/12/2013, 23:09
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Novato!! usando un trigger depues de algo

Ok pues bueno esta bn echare un vistaso a los trigger pero creo que ya los conozco por que trabaje con ellos unos pocos ejercicios pero en SQLServer. Por eso digo y tambien he escuchado que en bd se puede hacer programación. La verdad no se nada sobre trigger de mysql y chicos no es por ser facilista pero en este momento no tengo tiempo para estudiarlos asi como detalladamente ya que estoy trabajando en un proyecto y tengo un limite que se acerca. De hecho mientras trabajaba en ese proyecto me surgio la necesidad de conocer un poco más BD y en si mysql. Pido paciencia si les trato de sacar el mal genio...
  #10 (permalink)  
Antiguo 21/12/2013, 06:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Novato!! usando un trigger depues de algo

Algo tan sencillo como esto (sacado de manuales), cada vez que insertes un usuario, insertará en cantidades en el campo usuario el valor de cod insertado en la tabla usuario.

Código MySQL:
Ver original
  1. delimiter #
  2.  
  3. create trigger insertar_usuario after insert on usuario
  4.   insert into cantidades (usuario) values (new.cod);

Etiquetas: sql, tabla, trigger, usando, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:54.