Buscar

como criar um trigger (restrincoes ) em Base de Dados

💡 5 Respostas

User badge image

Joao Andre MArtins Dias

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;

 

0
Dislike0
User badge image

Joao Andre MArtins Dias

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;

 

0
Dislike0
User badge image

Joao Andre MArtins Dias

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;

 

 

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Outros materiais