Resumen Base De Datos Ii
PL/SQL: (Procedural Language/Structured Query Language) es un lenguaje de programación incrustado en Oracle (por estar dentro es más veloz)
Cursor: Un cursor es un conjunto de registros devuelto por una instrucción SQL. Técnicamente los cursores son fragmentos de memoria que son reservados para procesar los resultados de una consulta SELECT.
Declare cursor<nombrecursor> is <sentencia select >
Triggers: Un trigger es un bloque PL/SQL asociado a una tabla, que se ejecuta como consecuencia de una determinada instrucción SQL (una operación DML: INSERT, UPDATE o DELETE) sobre dicha tabla.
CREATE [OR REPLACE] TRIGGER <nombre_trigger>
{BEFORE|AFTER}
{DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]
[OR{DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]...]}
ON <nombre_tabla>
[FOR EACH ROW [WHEN (<condicion>)]]
DECLARE
-- variables locales
BEGIN
-- Sentencias
[EXCEPTION]
-- Sentencias control de excepcion
END <nombre_trigger>;
Los triggers pueden definirse para las operaciones INSERT, UPDATE o DELETE, y pueden ejecutarse antes o después de la operación. El modificadorBEFORE AFTER indica que el trigger se ejecutará antes o despues de ejecutarse la sentencia SQL definida por DELETE INSERT UPDATE. Si incluimos el modificador OF el trigger solo se ejecutará cuando la sentencia SQL afecte a los campos incluidos en la lista.
El alcance de los disparadores puede ser la fila o de orden. El modificador FOR EACH ROW indica que el trigger se disparará cada vez quese realizan operaciones sobre una fila de la tabla. Si se acompaña del modificador WHEN, se establece una restricción; el trigger solo actuará, sobre las filas que satisfagan la restricción.
Triggers de sustitución: Podemos crear triggers que no se ejecutan antes ni después de una instrucción sino en lugar de (instead of). Solo podemos utilizar estos triggers si están asociados a vistas. Se encargan demodificar los valores de las tablas cuando se ejecutan eventos DML sobre una vista.
Triggers de sistema: Estos triggers se disparan cuando se arranca o para la base de datos, entra o sale un usuario, cuando se crea, modifica o elimina un objeto, etc (operaciones DDL creates, alters, roles). Sirve para añadir más seguridad a la B/D.
OLD y NEW: Dentro del ámbito de un trigger disponemos delas variables OLD y NEW . Estas variables se utilizan del mismo modo que cualquier otra variable PL/SQL, con la salvedad de que no es necesario declararlas, son de tipo %ROWTYPE y contienen una copia del registro antes (OLD) y despues(NEW) de la acción SQL (INSERT, UPDATE, DELTE) que ha ejecutado el trigger. Utilizando esta variable podemos acceder a los datos que se están insertando, actualizando oborrando. La siguiente tabla muestra los valores de OLD y NEW.
ACCION SQL | OLD | NEW |
INSERT | No definido; todos los campos toman valor NULL. | Valores que serán insertados cuando se complete la orden. |
UPDATE | Valores originales de la fila, antes de la actualización. | Nuevos valores que serán escritos cuando se complete la orden. |
DELETE | Valores, antes del borrado de la fila. | Nodefinidos; todos los campos toman el valor NULL. |
Los registros OLD y NEW son sólo válidos dentro de los disparadores con nivel de fila.
Tabla mutante: Se da cuando se ejecuta una operación DML dentro de un trigger que se dispara por un mismo evento DML.
Soluciones:
1) Colocar el trigger After.
2) Elaborar lógica por PL/SQL.
3) Trabajar con tablas temporales.
Transacciones:Conjunto de operaciones que están entre dos commits
Etapas de una transacción:
a) Inicio: commit.
b) Operaciones: DML
c) Fin:
-Confirmacion: Commit.
-Cancelación: Rollback.
Propiedades de las transacciones:
* Atomicidad: La transacción se realiza por completo o no se realiza.
* Conservación de consistencia: Una ejecución correcta de la transacción debe...
Regístrate para leer el documento completo.