Soy muy nuevo en los desencadenadores de Oracle. Supongamos que tengo un disparador en un inserto en la tabla emp. ¿Hay alguna manera de averiguar cuál fue el registro insertado que disparó el gatillo? Quería que el desencadenador tuviera un código que hiciera algo si el registro insertado tenía un valor particular.Obtener el valor que activó el desencadenador de Oracle
7
A
Respuesta
10
Asumiendo que tiene un trigger a nivel de fila, sólo tiene que utilizar el :NEW
pseudo-registro
CREATE TRIGGER name_of_trigger
BEFORE INSERT ON emp
FOR EACH ROW
DECLARE
<<declare variables>>
BEGIN
IF(:new.ename = 'JUSTIN')
THEN
<<do something if the newly inserted ENAME value is 'JUSTIN'>>
END IF;
END;
Para un desencadenador DDL, el enfoque es completamente diferente. En ese caso, las pseudofunciones ora_dict_obj_owner y ora_dict_obj_name devolverán el propietario y el nombre de la tabla en la que está operando la instrucción DDL.
7
La fila que está siendo insertes está disponible como NEW
en el gatillo
Salida del manual para más detalles.
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/create_trigger.htm#BABEBAAB
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#LNPLS99955
Cuestiones relacionadas
- 1. El desencadenador no es válido en Oracle
- 2. ¿Cómo obtener el widget que activó un evento?
- 3. Creación de un desencadenador en Oracle Express
- 4. TSQL hace que el desencadenador falle silenciosamente
- 5. Cómo obtener el valor UTC para SYSDATE en Oracle
- 6. El desencadenador PostgreSQL no devuelve nada
- 7. ¿Cómo desarrollar un desencadenador after serverror en Oracle?
- 8. ¿Se activó el selector NSTextField en el foco perdido?
- 9. JQuery - Obtener el valor seleccionado
- 10. obtener el valor por el diccionario clave
- 11. Obtener el valor del mapa
- 12. Cómo eliminar el desencadenador en SQL Server?
- 13. ¿Cómo obtengo el desencadenador de subprocesos de UI?
- 14. ¿Cómo evitar que la columna b contenga el mismo valor que cualquier columna a en Oracle?
- 15. Obtener el valor hash que estaba delante hashchange
- 16. Agregación de eventos Prism: no se activó el suscriptor
- 17. Descubre qué botón de formulario activó el envío
- 18. Cómo saber qué botón de envío activó el evento onsubmit
- 19. Oracle - Devuelve el valor de clave recién insertado
- 20. ¿Es posible que un desencadenador encuentre el nombre del procedimiento almacenado que modificó los datos?
- 21. obtener el nombre de valor de namedtuple
- 22. Ruby - obtener el valor de hash de
- 23. Obtener el valor de retorno de fputcsv
- 24. Identidad de la fila insertada/actualizada en el desencadenador
- 25. obtener el valor de xey de UILabel?
- 26. obtener el valor de cadena de UISegmentedControl
- 27. Obtener el valor de retorno de JOptionPane
- 28. Obtener el valor anterior de ComboBox
- 29. ¿Cómo obtener el valor de un UISwitch?
- 30. Obtener el valor entero de enum
Hola, @Justin Cave, siento molestarte pero me di cuenta de que realmente necesito un disparador DDL o de sistema y no un desencadenador DML. Llamaría a un activador cada vez que se creara una nueva tabla en el esquema 'CREAR O REEMPLAZAR EL DISPARADOR drop_trigger DESPUÉS DE CREAR ON hr.SCHEMA BEGIN END;' ¿Cómo obtendré el nombre de la tabla creada que activó el activador ahora? ¿Sigue siendo NUEVO? – Eosphorus
@Eosphorus - No, los activadores de DDL son animales muy diferentes. Actualizado mi respuesta. –
muchas gracias Justin. Esto es algunas veces que me has ayudado ahora. Realmente lo aprecio :) – Eosphorus