Baixe o app para aproveitar ainda mais
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();
Compartilhar