Untitled
unknown
sql
4 years ago
2.2 kB
7
Indexable
CREATE TABLE Amigo(
Nombre VARCHAR(50),
Edad INTEGER
);
SET SERVEROUTPUT ON; --Para activar la salida por pantalla
--Se define un disparador sobre esta tabla
CREATE OR REPLACE TRIGGER dispAmigo
BEFORE INSERT OR UPDATE --Un trigger se ejecuta cuando hace un INSERT OR UPDATE OR DELETE
--tambien se puede poner para que se lance cuando se hace un cambio de un campo
--INSERT OR UPDATE OR DELETE OF Nombre
--Tambien se puede poner BEFORE(antes de los cambios) o AFTER(despues de los cambios)
ON Amigo
FOR EACH ROW -- Esto hace que se ejecute en cada fila
BEGIN
--Aqui código del trigger
dbms_output.put_line('**Ejecutando trigger');
--Distincion de casos
IF INSERTING THEN
dbms_output.put_line('**Capturo insercion');
ELSE
dbms_output.put_line('**Capturo actualizacion');
END;
CREATE OR REPLACE TRIGGER dispAmigo2
BEFORE UPDATE
ON Amigo
FOR EACH ROW when (NEW.Edad > 50) --Para restringir el evento de update
--para que se cumpla algo en concreto
--el NEW es despues de la modificación
--y el OLD para antes de la modificación
BEGIN
dbms_output.put_line('**Capturo actualizacion');
dbms_output.put_line('**Antes: ' || :OLD.Edad);
dbms_output.put_line('**Despues: ' || :NEW.Edad);
END;
INSERT INTO AMIGO VALUES ('Pepe', 39);
UPDATE amigo SET edad = 69
WHERE name = 'Pepe';
--A veces en el old y new puedes acceder a valores NULL
--En el evento de INSERT, los valores OLD son NULL. Antes de la
--insercion las filas no existian por lo tanto serán NULL
--En el evento de DELETE es parecido, en NEW será NULL
--Lunes 8 de octubre, 100mins de examen
--Consultas SQL ( 5 preguntas)
--Procedimientos/Funciones, PL/SQL (1 pregunta)
--Disparadores, no caen
--Los ejercicios son parecidos(¿iguales?) al de examen
--Seguramente dejará acceso a los apuntes del campus
--Los errores de detalles no le importa mucho(¿era INSERTING o INSERT?)
--Mismo nivel que el examenes FINALES
--Diapo 14, de transacciones y concurrencia
--1er transaccion 1 al 5
--2da transaccion 6 al 7
--3ra transaccion 8 , (la 9 no cuenta ha fallado por tener primary key repetida) al 11
--4ta transaccion, sin confirmarEditor is loading...