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

Actualizar una columna ...

Estas en el tema de Actualizar una columna ... en el foro de Mysql en Foros del Web. Hola, Hay algún método que nos actualice al instante una columna de una fila de la tabla ? Un saludo....
  #1 (permalink)  
Antiguo 23/09/2009, 04:16
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Actualizar una columna ...

Hola,
Hay algún método que nos actualice al instante una columna de una fila de la tabla ?
Un saludo.
  #2 (permalink)  
Antiguo 23/09/2009, 04:21
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, 4 meses
Puntos: 2658
Respuesta: Actualizar una columna ...

Básicamente un UPDATE, pero explicate un poco mejor, pero hay que ver el contexto de lo que necesitas.
__________________
¿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 23/09/2009, 04:36
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Actualizar una columna ...

Dentro de un trigger necesito saber si ese valor de una tabla y específicamente de una columna ha sido cambiado o no.
  #4 (permalink)  
Antiguo 23/09/2009, 05:38
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, 4 meses
Puntos: 2658
Respuesta: Actualizar una columna ...

Partiendo de la base de que un TRIGGER se dispara solo ante uno de tres eventos (DELETE, INSERT y UPDATE), y que los únicos parámetros entrantes son los datos del registro entrante (INSERT y UPDATE) y/o del anterior estado (UPDATE), la única verificación posible no es contra la propia tabla, ya que está bloqueada, sino contra el contenido de uno de los campos a actualizar respecto del valor entrante (UPDATE).
En este caso, si no se actualizase el valor, sólo podría suceder por un problema con el dato entrante y generaría un error.
Toda otra verificación solamente se puede hacer hacia otra tabla, en tanto no contenga un TRIGGER que afecte a la tabla bloqueada.

Dinos un poco más específicamente, contra qué validas y qué tipo de validación quieres hacer: Dentro de los valores entrantes respecto de los que ya están,o contra otra tabla.
__________________
¿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 23/09/2009, 06:51
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Actualizar una columna ...

Buenas,
Un trigger de BEFORE UPDATE y la tabla tiendas:
y dentro del trigger quiero saber si el valor de la columna pedidos de la tabla tiendas se va a cambiar o no. Específicamente para saber si se va ha cambiar el valor de esa casilla !
Espero que me hayas entendido sino otro intento.
Gracias.
  #6 (permalink)  
Antiguo 23/09/2009, 07: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, 4 meses
Puntos: 2658
Respuesta: Actualizar una columna ...

El problema que tienes es que el TRIGGER no te va a devolver ninguna información sobre eso, por dos razones:
Una: No están pensados para generar información de salida, sino para resolver tareas a realizarse en esos eventos.
Dos: Si lo hicieren, solamente obtendrías la información cuando el cambio ya se realizó y no antes de hacerse. Lo de BEFORE se refiere a tareas a realizar cuando ya se está ejecutando la sentencia pero aún no se completó la tarea. Pero no impide hacerla. No confirma.

Lo único que puedes hacer es resolver algo respecto a si un campo entrante va a hacer algo si es diferente al valor que ya está. Una posibilidad es cargar una variable de usuario, pero estas variables existen en el entorno de la sesión y mueren al cerrarse la conexión a donde se crearon.

Algo así:
Código SQL:
Ver original
  1. DROP TRIGGER IF EXISTS VERIFICAR_ACTUALIZACION;
  2. DELIMITER $$
  3. CREATE TRIGGER VERIFICAR_ACTUALIZACION BEFORE UPDATE
  4. ON TABLA1 FOR EACH ROW
  5. BEGIN
  6.   IF  NEW.CAMPO1 != OLD.CAMPO1 THEN
  7.     SET @INFO = 'SE HA PRODUCIDO UN CAMBIO EN EL CAMPO1';
  8.   ELSE
  9.     SET @INFO = 'SIN CAMBIOS';
  10.   END IF;
  11. END$$
  12. DELIMITER ;
Si no se lee esta variable antes de la siguiente actualización, el valor de detección de un cambio se pierde. También se pierde si la conexión es cerrada, como por ejemplo, al usar Navicat, PhpMyAdmin o MyQSLQueryBrowser, ya que en estos tres cada consulta abre y cierra una sesión.

Cualquier otra validación previa al UPDATE se debe hacer en la aplicación y no en la base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 10:20.