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

ayuda sobre triggers

Estas en el tema de ayuda sobre triggers en el foro de Mysql en Foros del Web. buenas a todos, estoy montando un sistema de votación por internet para una pequeña intranet que tengo creada. he preguntado en el foro de php ...
  #1 (permalink)  
Antiguo 29/11/2010, 07:25
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
ayuda sobre triggers

buenas a todos,

estoy montando un sistema de votación por internet para una pequeña intranet que tengo creada. he preguntado en el foro de php sobre como hacer una cosa que me han requerido:

Establecer un sistema de auditoria y 'log de updates' para garantizar que no se puedan mofidicar los datos a posteriori.

y un compañero me ha hablado de los triggers... he estado leyendo por google, pero no acabo de entender que es, y que funcion haria en lo que yo necesito. podeis ayudarme?

saludos!
  #2 (permalink)  
Antiguo 29/11/2010, 07:58
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: ayuda sobre triggers

Los triggers o "disparadores", son rutinas o scripts escritos en leguaje procedural propio del DBMS (PL/SQL en Oracle, T-SQL en SQL Server) que realizan uno o más conjuntos de acciones sin interacción con los usuarios ante determinados eventos ocurridos en una tabla.
- Sólo existen tres eventos: INSERT, DELETE y UPDATE.
- Los disparadores deben ser para ejecutar antes o despues de consolidar el evento (BEFORE / AFTER), ya que pueden implicar acciones previas o posteriores a lo que se quiere controlar.
- Los únicos datos de entrada son los mismos valores que se envían con la sentencia que provoca el evento.
- No devuelven datos como resultado del trigger. Solo realizan acciones, cualquier mensaje que se desee obtener de ellos debe hacerse por tablas temporales o bien con variabes de usuario. de MySQL
- Los datos entrantes no se pueden acceder por el nombre del campo,sino a través de pseudovariables NEW y OLD, según el caso (VER MANUAL DE REFERENCIA).
- MySQL no admite ejecuciones opcionales de los trigger.
- Tampoco admite la invocación de SP o procesos recursivos.
- Ningún trigger puede realizar una acción INSERT/UPATE/DELETE contra la misma tabla donde se define. La tabla se encuentra bloqueada mientras dura el evento.
- Los triggers no se pueden invocar. Se disparan solos.
- Como los SP, sólo pueden definirse en una base de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/11/2010, 08:08
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda sobre triggers

gracias gnz...

la verdad es que he entendido poco o nada! jajajaa. y esto, de que me sirve? es decir, cuando me piden esto de los triggers para mi sistema de votacion, a que se refieren?

saludos
  #4 (permalink)  
Antiguo 29/11/2010, 08:26
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: ayuda sobre triggers

MySQL no cuenta con sistemas de auditoría integrados, o aplicaciones para eso que sean parte del paquete, como es el caso de Oracle, SQL Server, o DB2. En el caso de MySQL hay que recurrir a aplicaciones de terceros que realizan esa tarea, o bien programar un sistema propio, que es lo que te están indicando.
Lo que se hace es crear una base de datos para ello, o un conjunto de tablas para auditoría y crear los triggers que la alimenten ante cada evento que se produce, especialmente en tablas críticas, como usuarios, sesiones, permisos, etc., tales que permita cierta trazabilidad de las acciones de los usuarios.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 29/11/2010, 09:32
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda sobre triggers

sigo sin entender gnz en que puede afectar a lo que tengo, y a lo que me piden.

saludos
  #6 (permalink)  
Antiguo 29/11/2010, 09:45
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: ayuda sobre triggers

Cita:
Establecer un sistema de auditoria y 'log de updates' para garantizar que no se puedan mofidicar los datos a posteriori.
¿Y cómo lo piensas que lo harías tu?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 29/11/2010, 09:48
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda sobre triggers

yo iba a hacer una cosa mas simple. tengo una intranet de usuarios registrados con user y pass. al acceder a la intranet, el usuario tiene la opción de acceder al apartado de la votación.

el usuario ejerce su voto, y este queda registrado en la bd con el idsocio, hora y fecha del voto, ip, y un campo boolean para validar que vota y no puede volver a hacerlo.

ese es el sistema que yo tenia pensado. y esto me ha dejado fuera de juego

saludos!
  #8 (permalink)  
Antiguo 29/11/2010, 09:53
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: ayuda sobre triggers

Bueno. Imaginate ahora que quieresa saber si algún usuario con permisos suficientes entró a esa base y realizó un UPDATE contra la tabla de votaciones modificando los votos emitidos.
¿Cómo harías para darte cuenta de que eso sucedió?

En tu modelo solamente consideras los votos que entran por INSERT y sólo si entran por la web.... ¿Qué sucede con el resto de los accesos?

Otra: ¿Cómo harías para saber cuáles fueron todas las operaciones de actualizacion hechas por un mismo usuario en un día o una semana dados, sin importar de qué formularios usó, vio o cargó?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 29/11/2010, 10:10
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda sobre triggers

de que otra forma se puede acceder gnz? yo valido unicamente la entrada. puedes echarme un cable con esto??
  #10 (permalink)  
Antiguo 29/11/2010, 10:33
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: ayuda sobre triggers

Cualquier usuario de MySQL que posea permisos en el servidor de MySQL donde está la base, y con privilegios más o menos elevados puede, si quiere, cambiar el contenido de las tablas sin necesidad de usar la aplicación, si sabe suficiente de SQL.
¿Nunca has usado el phpMyAdmin o cualquier cosa semejante para revisar las tablas...? Cuando lo haces, estás pasando por encima de las restricciones de tu programa. Estás entrando directamente al corazón de la base de datos que usas.
Uno de los objetivos de una auditoria es precisamente supervisar ese tipo de cosas.

¿Crees que no puede pasar? El último que lo pensó perdió el trabajo cuando un hacker o un compañero de oficina, bastante bobo, le borró las tablas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: trigger
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 09:18.