Exemplo de trigger:
Faça um trigger que não permita a inserção de uma turma numa sala de tipo <> 2 e quando permitido gere o auto-incremento para o numero da turma.
CREATE OR REPLACE TRIGGER ACD_TG_BIU_TURMAS
BEFORE INSERT OR UPDATE ON ACD_TURMAS
FOR EACH ROW
DECLARE
WSAL_TIPO ACD_SALAS.SAL_TIPO%TYPE;
BEGIN
SELECT SAL_TIPO INTO WSAL_TIPO
FROM ACD_SALAS
WHERE SAL_CODIGO = :NEW.SAL_CODIGO;
IF WSAL_TIPO <> 2 THEN
RAISE_APPLICATION_ERROR(-20500, 'Tipo de sala Invalido - ');
END IF;
IF INSERTING THEN
:NEW.TUR_NRO := ACD_SEQ_TURMAS.NEXTVAL;
END IF;
END;
Faça os triggers necessários para gerar o auto-incremento nas seguintes tabelas: acd_cursos; acd_cidades; acd_mensalidades e acd_salas.
Obs. Não se esquecer de criar as sequences.
CREATE SEQUENCE ACD_SEQ_CIDADES INCREMENT BY 1 START WITH 40;
CREATE SEQUENCE ACD_SEQ_CURSOS INCREMENT BY 1 START WITH 7;
CREATE SEQUENCE ACD_SEQ_SALAS INCREMENT BY 1 START WITH 8;
CREATE SEQUENCE ACD_SEQ_TURMAS INCREMENT BY 1 START WITH 6;
CREATE SEQUENCE ACD_SEQ_MENSALIDADES INCREMENT BY 1 START WITH 1;
CREATE OR REPLACE TRIGGER ACD_TG_BI_CURSOS
BEFORE INSERT ON ACD_CURSOS
FOR EACH ROW
BEGIN
:NEW.CUR_CODIGO := ACD_SEQ_CURSOS.NEXTVAL;
END;
CREATE OR REPLACE TRIGGER ACD_TG_BI_CIDADES
BEFORE INSERT ON ACD_CIDADES
FOR EACH ROW
BEGIN
:NEW.CID_CODIGO := ACD_SEQ_CIDADES.NEXTVAL;
END;
CREATE OR REPLACE TRIGGER ACD_TG_BI_SALAS
BEFORE INSERT ON ACD_SALAS
FOR EACH ROW
BEGIN
:NEW.SAL_CODIGO := ACD_SEQ_SALAS.NEXTVAL;
END;
CREATE OR REPLACE TRIGGER ACD_TG_BIU_MENSALIDADES
BEFORE INSERT ON ACD_MENSALIDADES
FOR EACH ROW
BEGIN
:NEW.MEN_NRO := ACD_SEQ_MENSALIDADES.NEXTVAL;
END;
Faça um trigger que na inserção de uma nova pessoa gere o auto-incremento do código e verifique se o CPF é valido e na alteração apenas verifique o CPF.
Obs. Deve ser utilizada a função criada no item anterior.
CREATE SEQUENCE ACD_SEQ_PESSOAS INCREMENT BY 1 START WITH 7;
CREATE OR REPLACE TRIGGER ACD_TG_BIU_PESSOAS
BEFORE INSERT OR UPDATE ON ACD_PESSOAS
FOR EACH ROW
BEGIN
IF V_CPF(:NEW.PES_CPF) <> 'S' THEN
RAISE_APPLICATION_ERROR(-20500, 'CPF Invalido');
END IF;
IF INSERTING THEN
:NEW.PES_NRO := ACD_SEQ_PESSOAS.NEXTVAL;
END IF;
END;
Para escrever sua resposta aqui, entre ou crie uma conta.
Base de Dados Access e Sql
Compartilhar