¿Alguien puede explicar la diferencia entre el desencadenante "antes" y "después" en el oráculo 10g con un ejemplo?diferencia antes y después del desencadenador en el oráculo
Respuesta
En primer lugar, voy a empezar mi respuesta definiendo gatillo: un gatillo es un procedimiento almacenado que se ejecuta cuando se agrega una fila, modificado o eliminado.
disparadores pueden ejecutar ANTES se toma la acción o DESPUÉS se adopte la medida.
BEFORE
desencadenantes generalmente se utilizan cuando la validación debe llevarse a cabo antes de aceptar el cambio. Se ejecutan antes de realizar cualquier cambio en la base de datos. Supongamos que ejecuta una base de datos para un banco. Tiene una tabla accounts
y una tabla transactions
. Si un usuario realiza un retiro de su cuenta, le recomendamos que se asegure de que el usuario tenga suficientes créditos en su cuenta para su retiro. El activador BEFORE
permitirá hacer eso y evitar que la fila se inserte en transactions
si el saldo en accounts
no es suficiente.
AFTER
desencadenantes generalmente se utilizan cuando la información debe actualizarse en una tabla separada debido a un cambio. Se ejecutan después de que se hayan realizado cambios en la base de datos (no necesariamente confirmados). Regresemos a nuestro ejemplo anterior. Después de una transacción exitosa, querrá que se actualice balance
en la tabla accounts
. Un disparador AFTER
le permitirá hacer exactamente eso.
+1 Solo agregaría que algunas validaciones de gatillo deben realizarse en la fila DESPUÉS desencadena, porque es solo en los desencadenadores DESPUÉS que los valores de la columna son "fijos". En un desencadenante ANTES, puede validar y pasar alguna regla compleja basada en el valor de: NEW.col solo para el valor de: NEW.col que se cambiará más tarde en el desencadenante, de modo que la regla ahora se infringe. –
No estoy del todo seguro de lo que le interesa saber, así que lo mantendré como algo fundamental.
activadores anteriores
- De acuerdo con el nombre, estos factores desencadenantes son despedidos antes de la creación de la fila en la tabla. Posteriormente, dado que la fila aún no se ha creado, tiene acceso completo al campo: new.table_element. Esto permite la limpieza y uniformidad de los datos si se intenta insertar/actualizar datos no deseados/malformados. Este es solo un ejemplo básico, pero debe utilizar el activador anterior cada vez que necesite acceder a los datos ": nuevos".
activadores posteriores
- Desde los incendios después de gatillo una vez ya se ha creado la fila, estos disparadores se utilizan normalmente cuando se desea la lógica que se produzca debido a la fila. Por ejemplo, si tiene una tabla de direcciones y un usuario actualiza su dirección, puede actualizar los identificadores de referencia de direcciones en una tabla xref luego de la creación (si conserva también todas las direcciones antiguas). Además, a diferencia del disparador anterior, no tiene acceso para modificar ninguno de los valores de la columna ya que la fila ya existe en la tabla.
desencadenante anterior se utilizan cuando la acción del disparador debe determinar si las declaraciones de activación se debe permitir que completar .por mediante activadores anteriores usuario puede eliminar el procesamiento innecesario de la sentencia activadora pero, activadores posteriores se utilizan cuando los estados de activación debe completarse antes de ejecutar la acción desencadenante.
Por favor edite su respuesta existente, en lugar de duplicar otra. – wonea
- 1. Grep caracteres antes y después del partido?
- 2. LaTeX en blanco después del número y antes del texto
- 3. cómo puedo obtener el texto antes y después del "-" (guión)
- 4. GWT Suggestbox define sugerir el oráculo después de la instanciación
- 5. Alinear verticalmente CSS: antes y después del contenido
- 6. cómo trabajar después del desencadenador de inserción en el servidor sql 2008
- 7. Crear desencadenador en SQL Server
- 8. ejecución condicional después de un desencadenador de eliminación en SQLite
- 9. Llamar al proceso almacenado después de insertar el desencadenador
- 10. Connect SQLPLUS en el oráculo
- 11. archivo js del nodo desencadenador
- 12. Tamaño verdadero del espacio de tabla en el oráculo
- 13. Cortar texto en cadena después/antes del separador en powershell
- 14. Modificadores del método Perl Moose: Llamar 'alrededor' antes de 'antes' y 'después'
- 15. secuencia de fecha del oráculo?
- 16. Dividir el doble en dos int, un int antes del punto decimal y uno después de
- 17. ¿Cuál es la diferencia entre: antes y :: antes?
- 18. ¿Qué es más rápido, EXISTE antes o después del INSERT?
- 19. El manejo de excepciones antes y después de la principal
- 20. ¿Filtro para ejecutar antes del renderizado pero después del controlador?
- 21. Encontrar el elemento antes y después de un elemento específico
- 22. El desencadenador no es válido en Oracle
- 23. espacio después si, mientras, etc (y antes el paren)
- 24. Display puntos suspensivos antes y después de fragmento en SOLR
- 25. Ignorando la excepción en el activador de oráculo
- 26. ¿Hay algún evento después de Loaded y antes de mostrar el control del usuario?
- 27. ¿Existe alguna función JS para encontrar el valor antes y después del punto decimal?
- 28. Error de PLS-00323 en el oráculo
- 29. buscar valores antes y después en una larga lista ordenada
- 30. ¿Dónde colocar "antes" y "después" en una receta de Capistrano?
Todavía no estaba seguro de lo que estaba buscando en términos de simplicidad, así que borré mi respuesta. Alguien más puede tener una buena idea. –
Por cada pequeña duda estoy publicando una pregunta en desbordamiento de pila sin pensar .....(Creo que no debería hacerlo) ... Entendí el concepto de disparadores ahora. De aquí en adelante pensaré antes de publicar la pregunta ... – Jagan