Actualizar una tabla en un desencadenador después de actualizar en la misma tabla
En SQL, actualizar una tabla en un desencadenador después de una actualización en el La misma tabla presenta un problema potencial. Esto se debe a que la tabla ya está bloqueada para la operación de actualización y intentar acceder a la tabla dentro de un activador ejecutado como parte de la misma transacción puede generar un conflicto.
Para evitar esta restricción, puede actualizar la tabla columnas afectadas en el activador utilizando la opción ANTES en lugar de DESPUÉS. Esto le permite actualizar las columnas de la tabla antes de que ocurra la operación de actualización original, asegurando que se realicen los cambios necesarios en la tabla antes de que finalice la transacción.
Considere el siguiente ejemplo:
CREATE TRIGGER upd_total_votes BEFORE UPDATE ON products_score FOR EACH ROW BEGIN SET new.votes_total = new.votes_1 new.votes_2 new.votes_3 new.votes_4 new.votes_5 END ;
En este ejemplo, el activador se ejecutará antes de cada operación de actualización en la tabla product_score. Calculará el nuevo valor para la columna votes_total en función de los valores de las columnas actualizadas (votes_1 a votes_5) y lo almacenará en la columna virtual new.votes_total proporcionada por el contexto de activación.
Cuando actualice la tabla , el activador garantizará que la columna votes_total se actualice en consecuencia, aunque la declaración de actualización no actualice explícitamente la columna votes_total en sí.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3