Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/09/2011, 15:21
Avatar de J_de_Prado
J_de_Prado
 
Fecha de Ingreso: junio-2011
Ubicación: Alpedrete, Madrid,España
Mensajes: 28
Antigüedad: 8 años, 10 meses
Puntos: 2
Pregunta Provocar un update con dos filas de la misma tabla

Hola,
Estoy tratando de diseñar una base de datos en la que los usuarios seleccionan un objeto para compartir con otro usuario.
Esto se almacena en una tabla llamada enviados. funciona así, en la tabla básicamente se registra un d_user ( U1 quien registra el mensaje) un c_mess (el objeto a compartir) y un m_to ( U2 es con quien se quiere compartir), cuando este usuario U2 registra el mismo objeto para compartir con el usuario U1 como es el caso de las dos primera filas, cuando se da ese caso los campos full debería cambiar y pasar por ejemplo a "1"
Mis dudas son:
¿Cómo detectar cuando se dan la condiciones de reciprocidad, como el caso de las dos primeras líneas? Con un where anidado tal vez?

Al estar en la misma tabla no me funciona el TRIGGER, ni siquiera si este llama a una rutina, cosa que si funciona si la rutita actúa sobre otra tabla, si bien los eventos que produce en esta última no provocan el disparo de los TRIGGER que tenga. ¿no tendré mas remedio que crear otra tabla?

Espero haberme explicado bien en esencia lo que intento es con esta base de datos es algo como:
..........Yo estaría dispuesto a comprar algo de a medias contigo si tu estas dispuesto a lo mismo

Gracias


Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `enviados` (
  2.   `id_sent` int(20) NOT NULL AUTO_INCREMENT,
  3.   `id_user` int(5) NOT NULL DEFAULT '0',
  4.   `c_mess` int(5) NOT NULL DEFAULT '0',
  5.   `m_to` int(5) NOT NULL DEFAULT '0',
  6.   `full` int(11) NOT NULL DEFAULT '0',
  7.   PRIMARY KEY (`id_sent`),
  8.   KEY `id_user` (`id_user`),
  9.   KEY `m_to` (`m_to`),
  10.   KEY `c_mess` (`c_mess`)
  11. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci COMMENT='mensajes enviados' AUTO_INCREMENT=5 ;
  12.  
  13. --
  14. -- Volcado de datos para la tabla `enviados`
  15. --
  16.  
  17. INSERT INTO `enviados` (`id_sent`, `id_user`, `c_mess`, `m_to`, `full`, `date`) VALUES
  18. (1, 1, 2, 3, 0, '2011-09-29 20:47:29'),
  19. (2, 3, 2, 1, 0, '2011-09-29 20:47:29'),
  20. (3, 3, 1, 1, 0, '2011-09-29 18:40:50'),
  21. (4, 1, 2, 3, 0, '2011-09-29 18:40:50');