trabalho banco de dados
- É um bloco Pl/SQL armazenado no BD e executado como resposta a um determinado evento.
Tipos de eventos:
Comandos DML: UPDATE, DELETE , INSERT.
Comandos DDL: CREATE, ALTER , DROP.
Eventos de BD/Usuários: login, logout,startup/shutdown
-Quando uma tabela é dropada todos os triggers associados a ela também são.
-Trigger não possui controle transacional, faz parte da transação que disparou o Trigger.Se a transição comita, todas as operações do Trigger também são comitadas.
- Reforçar regras de negócio, que não podem ser implementadas pelas constraints.
-Regras de segurança complexas.
- Gerar valores de colunas derivadas automaticamente.
- Gerar informação de auditoria.
- Qualquer função/procedure que o trigger chame, não pode ter commit/rollback.
- Trigger pode ser de comando ou por linha.
- Podem ser disparado antes ou depois de um evento.
Ex: create or replace trigger stud_bi before insert on student for each row declare v_stud number; begin select stud_seq.nextual into v_stud from dual;
:new.stud_id:=v_stud;
:new.criacao:=user;
:new.data_cri:=sysdate;
end;
:new -> é um record do mesmo tipo de registro da tabela. Pode se acessar os campos individualmente.é um record do mesmo.
:old -> é um record do mesmo tipo de registro da tabela. Pode se acessar os campos individualmente.
:new são os valores sendo inseridos/atualizados;
:old são os valores sendo deletados/atualizados;
Ex:
create or replace trigger prof_aiud after update or delete or insert on professores declare v_tipo varchar2 (10); begin if updating then v_tipo:='Update'; elsif deleting then v_tipo:='delete'; elsif inserting then v_tipo:='insert'; end if; update estat_tab set usuario=user,