Hola,
Hay algún método que nos actualice al instante una columna de una fila de la tabla ?
Un saludo.
| ||||
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) |
| |||
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. |
| ||||
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:
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.Ver original 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) |