bases de datos

Páginas: 9 (2082 palabras) Publicado: 10 de noviembre de 2014
PRÁCTICA III.
DISPARADORES EN SQL (II)

MODELOS AVANZADOS DE BASES DE DATOS
CURSO 2000/2001

PRÁCTICA III. DISPARADORES EN SQL (II)

Objetivo
Conocer mejor los disparadores en SQL. Se verá uno de los principales inconvenientes
que se presentan al trabajar con disparadores, las tablas mutantes. También se verá un
último tipo de disparadores (INSTEAD OF) que se utilizan en Oracle8siempre
asociados a vistas de la base de datos.

1. Cuerpo del disparador
En la práctica anterior ya se comentó lo que podía incluirse dentro del cuerpo de un disparador, como
sentencias SQL. Pero también, en el cuerpo de un disparador pueden incluirse subprogramas escritos en
PL/SQL.

En general, las sentencias de control utilizables por PL/SQL coinciden con las de
cualquier lenguaje de altonivel. Sin embargo, existen una serie de funciones utilizables
dentro del cuerpo de un disparador que resultan de gran utilidad. Entre ellas, vamos a
estudiar aquí, las funciones inserting, deleting y updating, y la función
RAISE_ERROR_APPLICATION.
Funciones booleanas inserting, deleting, updating.
Estas funciones se utilizan cuando el evento de un disparador es compuesto, es decir,
queremosque el disparador se active ante diferentes operaciones DML pero no
queremos que haga lo mismo para cualquiera de los eventos activadores. Con lo visto
hasta ahora, la única solución sería diseñar un disparador para cada una de las acciones
DML de activación. Sin embargo, con las funciones inserting, updating y deleting,
podremos hacer todo en un único disparador.
Ejemplo.
CREATE OR REPLACETRIGGER ejemplo
BEFORE INSERT OR UPDATE OR DELETE ON tabla
BEGIN
IF DELETING THEN
Acciones asociadas al borrado
ELSIF INSERTING THEN
Acciones asociadas a la inserción
ELSE
Acciones asociadas a la modificación
END IF;
END ejemplo;
/
Función RAISE_APPLICATION_ERROR

Procedimiento que devuelve mensajes de error al usuario cuando éste va a realizar una
operación no permitida y queinterrumpe la ejecución del disparador.
Sintaxis: RAISE_APPLICATION_ERROR(nro_eror, mensaje);
MODELOS AVANZADOS DE BASES DE DATOS
Curso 2000/2001

2

PRÁCTICA III. DISPARADORES EN SQL (II)

Dónde: nro_error es un número asignado por el usuario que debe estar entre –20000 y
-20999 y mensaje es el mensaje que aparecerá por pantalla al usuario cuando se
produzca el error.
Ejemplo.
CREATE ORREPLACE TRIGGER ejemplo
BEFORE DELETE ON tabla
FOR EACH ROW
BEGIN
IF tabla.columna= valor_no_borrable THEN
RAISE_APPLICATION_ERROR(-20000, ‘La fila no se puede
borrar’);
END IF;
...
END ejemplo;

2. Declaración de variables
Dentro de un disparador podemos declarar variables que utilizaremos dentro del cuerpo
del mismo.
Sintaxis:
CREATE...
BEFORE...
[FOR EACH ROW ...]
DECLAREDeclaración de variables
BEGIN
...
La declaración de variables podrá ser:
nombre CONSTANT NUMBER:= valor;
(nombre=valor constante)
nombre TIPO;
(nombre como variable del tipo especificado)
nombre nombretabla%ROW TYPE;
ROWTYPE es el tipo de los registros OLD y NEW. Con esto crearemos una
variable nombre del tipo de la tabla. Para asignar el valor de una columna se
pondrá como:nombre.nombrecolumna, de esta forma podremos hacer
asignaciones del tipo nombre.nombrecolumna = :OLD.nombrecolumna)

nombre nombretabla.nombrecolumna%TYPE
MODELOS AVANZADOS DE BASES DE DATOS
Curso 2000/2001

3

PRÁCTICA III. DISPARADORES EN SQL (II)

Crea una variable nombre del mismo tipo que el de la columna nombrecolumna
de la tabla nombretabla.
Para asignarle valor a una variable se utilizael signo :=

3. Restricciones de los disparadores
Una tabla mutante es una tabla que está siendo modificada por una operación DELETE,
INSERT o UPDATE, o una tabla que se verá afectada por los efectos de un DELETE
CASCADE debido a la integridad referencial. Las tablas mutantes sólo deben aparecen
en disparadores con nivel de fila. Una tabla sobre la que se define un disparador es una
tabla...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Que es una base de datos y tipos de base de datos
  • Bases de datos y usuarios de bases de datos
  • Base De Datos
  • Base De Datos
  • Base de datos
  • Base De Datos
  • Base de datos
  • Bases de datos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS