Buscar

Lista 10 triggers com notas

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

Prévia do material em texto

Considere o esquema relacional abaixo: 
 
Amigo (aid: integer, anome: string, sexo: char, idade: integer) 
Presente (pid: integer, pdescricao: string, pvalor: real) 
ListaPresente (aid: integer, pid: integer, preferência: integer) 
AmigoSecreto(aid: integer, aid_amigo: integer, pid_recebido: integer) 
 
1. Questão 
Defina um gatilho (“trigger”) a fim de assegurar que um participante só pode ter no 
máximo 10 presentes e no mínimo 1 presente em sua lista de presentes. 
2. Questão 
Defina um gatilho (“trigger”) a fim de impedir que um participante receba um presente que 
não está na sua lista de presentes. 
3. Questão 
Defina um procedimento armazenado ou uma função que recebe como parâmetro de 
entrada o identificador de um amigo e insere todos os presentes em sua lista de presente. 
 
4. Questão 
Escreva um procedimento armazenado ou uma função que recebe como parâmetro de 
entrada o identificador de um amigo e retorna quanto em dinheiro seria gasto se ele 
ganhasse todos os presentes de sua lista. 
 
5. Questão 
Escreva um procedimento armazenado ou função que recebe como parâmetro de entrada 
o identificador de um presente e o exclui de qualquer tabela de dependência. 
6. Questão 
Defina um gatilho (“trigger”) a fim de impedir que quando um presente for removido, 
todas as suas dependências sejam removidas. 
 
 
10º Lista de Fundamento de Banco de Dados 
Campus UFC – Quixadá 
Professora: Ticiana Linhares 
Engenharia de Software 
Nome: 
2013.2 
Andre
Note
a) Inserir em listaPResentenullnullb) remover em listaPresentenullnullnullnulla)create function questao1a() return trigger ASnullnull$body$nullnulldeclarenullnull qtd int;nullnullbeginnullnull select count(*) into qtdnullnull from listaPresente lpnullnull where new.aid=lp.aidnullnull if(qtd=10) thennullnull return null;nullnull else return new;nullnull end if;nullnullend;nullnull$body$nullnullnullnullnullnullcreate trigger questao1_insertnullnullbefore insert on listaPresentenullnullfor each nownullnullexecute procedure questao1a()nullnullnullnullnullnullnullnullb) create function questao1b() return trigger ASnullnull$body$nullnulldeclarenullnull qtd int;nullnullbegin nullnull select count(*) into qtdnullnull from listaPresente lpnullnull whereold.aid=lp.aidnullnull if(qtd=1) thennullnull return null;nullnull else return old;nullnull end if;nullnullend;nullnull$body$nullnullnullnullnullnullcreate trigger questao1_deletenullnullbefore delete on listaPresentenullnullfor each nownullnullexecute procedure questao1b()nullnull
Andre
Note
create function questao2() return trigger ASnullnull$body$nullnulldeclarenullnull qtd int; nullnullbegin nullnull select count(*) into qtdnullnull from listaPresente lpnullnull where new.pid_recebido=lp.pid and nullnull new.aid_amigo=lp.aidnullnull if(qtd=0) thennullnull return null;nullnull else return new;nullnull end if;nullnullend;nullnull$body$nullnullnullnullcreate trigger questao2_insertnullnullbefore insert on AmigoSecretonullnullfor each nownullnullexecute procedure questao2();nullnull 
Andre
Note
create function questao3(idAmigo int) return void ASnullnull$body$nullnull declarenullnull idPresente int;nullnull cursor1 cursor is select pid from presente;nullnull pref int;nullnull qtd int;nullnull beginnullnull open cursor1;nullnull fecth cursor1 into idPresente;nullnull pref=1;nullnull loopnullnull exit when not foundnullnull select count(*) into qtdnullnull from listaPresente lpnullnull wher idAmigo=lp.ad and idPresente=lp.pidnullnull if(qtd=0) thennullnull insert into listaPresente values (idAmigo, idPresente, 0)nullnull pref = pref+1;nullnull end if;nullnull fetch cursor1 into idPresente;nullnull end loop;nullnull close cursor1;nullnullend;nullnull nullnull nullnull nullnull nullnullnullnull
Andre
Note
create function questao4(idAmigo int) return real ASnullnull$body$nullnulldeclarenullnull somalista real;nullnullbeginnullnull select sum(p.valor) into somalistanullnull from listaPresente lp.presente pnullnull where p.pid=lp.pid and lp.aid=idAmigonullnull return somalista;nullnullend;nullnull 
Andre
Note
create function questao5(idPResente int) return void ASnullnull$body$nullnullbeginnullnull delete from listaPresente lpnullnull where lp.pid=idPresente;nullnull delete from AmigoSecreto AMS nullnull where AMS.pid_recebido=idPresentenullnullend;
Andre
Note
create function questao6() return trigger ASnullnull$body$nullnullbeginnullnull execute procedure questao5(old.pid);nullnull return old;nullnullend;nullnull$body$nullnullnullnullcreate trigger questao6_deletenullnullbefore delete on Presentenullnullfor each rownullnullexecute procedure questao6();

Outros materiais