el desarrollo de disparo de Oracle

prestar atención al desarrollo del punto de disparo

  1. Gatillo no recibe parámetros
  2. Cuanto más el gatillo, menor será el rendimiento operativo de LMD
  3. Disparador de un máximo de 32k, si los procedimientos PL / SQL declaración demasiado, se puede escribir almacenados, disparadores llamada
  4. En la parte dispositiva del gatillo declaraciones sólo pueden DML (insertar, seleccionar, actualizar, eliminar), no puede utilizar las instrucciones de DDL (crear, alterar, borrar)
  5. Gatillo no puede contener sentencias de control de transacción (commit, rollback, punto de rescate), como parte de un disparador declaración se activa, sentencia activadora presentó una reversión, el gatillo se ha comprometido también, corrida, y procedimiento de llamada cuerpo del disparador la función no se puede utilizar las instrucciones de control de transacciones
  6. Gatillo cuerpo no puede declarar cualquier tiempo y blog variables de nuevo y ,:: mesa de edad no puede ser cualquier columna larga o un blog
  7. Una tabla puede tener un máximo de 12 disparadores, y al mismo tiempo, el mismo evento, el mismo tipo de disparador sólo puede tener una, ni contradicciones entre los diversos flip-flops
1  - inserto事件触发器
2 antes de inserto / antes de inserción  para cada fila
 3 después de inserto / después de inserción  para cada fila
 4  - actualización事件触发器
5 antes de actualización / antes de la actualización  para cada fila
 6 después de actualización / después de actualización  para cada fila
 7  - delete事件触发器
8 antes de borrar / antes de borrar para cada fila
 9 después de borrado / después de borrado  para cada fila

Gatillo activar y desactivar

. 1  - Activar / Desactivar flip-flop individuo 
2  ALTER  disparador trigger_name {habilitar / deshabilitar};
 3.  - Activar / desactivar todos los disparadores asociados con una tabla en particular 
4.  ALTER  Tabla nombre_tabla {permiten / disable} Todos los disparadores;

sintaxis gatillo

. 1  Crear  [ o reemplazar ]  disparador trigger_name
 2 {antes / Después} - tiempo de gatillo 
. 3 { Delete / INSERT / Actualización  [ de la columna ] } - evento desencadenante 
. 4  EN  Tabla 
. 5  [ para cada fila [DONDE (condición) ] ]
 6  DECLARE 
. 7  - Variables locales aquí del papel pintado 
. 8  al comenzar 
. 9      PL / SQL
 10  Fin ;

caso

1, insertar una palabra de datos de impresión

1  crear  o  sustituir  el gatillo trg_test1
 2      después de la inserción  en la  tabla 
3  comienzan 
4      dbms_output.put_line ( ' inserción exitosa! ' )
 5  final  [ trg_test1 ] ;

2, los datos no se puede insertar en el fin de semana

. 1  Crear  o  Reemplazar  disparador trg_test2
 2      antes INSERT  EN  Tabla 
3.  DECLARE 
4.      T_day VARCHAR2 ( 10 );
 . 5  el comenzar 
. 6      SELECT TO_CHAR (SYSDATE, ' Día ' ) EN t_day de Dual;
 . 7      SI t_day en ( ' Sábado ' , ' Domingo ' ) el entonces 
8      - Lanza un error 
9     RAISE_APPLICATION_ERROR ( - 20001 , ' no se puede insertar en el fin de semana de datos! ' );
 10      Fin  SI ;
 11.  Fin  [ trg_test2 ] ;

3, uso: viejo y: nuevo

declaración del activador :antiguo :nuevo
insertar Todos los campos son nulos Los datos que se insertan
actualizar Valor antes de la actualización El valor actualizado
Eliminar Valor antes de borrar Todos los campos son nulos

 

 

 

. 1  - se determina: actualización del valor original debe ser mayor que 
2  Crear  o  reemplazar  gatillo trg_test3
 3.      Antes de Actualización  del COL EN  Tabla 
4.      Para cada fila
 5.  Al comenzar 
6.      SI : old.col > : new.col al entonces 
. 7          RAISE_APPLICATION_ERROR ( - 20002 , ' valores actualizados menor que el valor original no se puede actualizar! ' );
 . 8      Fin  SI ;
 . 9  End  [ trg_test3 ] ;

 

Supongo que te gusta

Origin www.cnblogs.com/cnblogs-syui/p/12511249.html
Recomendado
Clasificación