lista exercicios tii pbd 2011-12-14 oracle
DESCRIPTION
asTRANSCRIPT
MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE GOIÁS
CAMPUS DE JATAÍ COORDENAÇÃO DOS CURSOS DE INFORMÁTICA
TÉCNICO INTEGRADO EM INFORMÁTICA
PROGRAMAÇÃO PARA BANCO DE DADOS
CRIANDO BANCO DE DADOS:
CREATE TABLE cidade
(cidcod number not null, cidnome varchar2(20), ciduf char(2), primary key (cidcod));
CREATE TABLE cliente
(clicod number not null, clinome varchar2(30), clicpf varchar2(14), clicodcid number,
primary key (clicod));
CREATE TABLE departamento
(depcod number not null, depnome varchar2(20), primary key (depcod));
CREATE TABLE funcionario
(funcod number not null, funnome varchar2(30), funcoddep number, primary key (funcod));
CREATE TABLE venda
(vendcod number not null, vendcodfunc number, vendcodcli number, venddata date,
vendtotal number(15,2), primary key (vendcod));
CREATE TABLE produto
(prodcod number not null, proddesc varchar2(20), prodquant number, prodvalor
number(15,2), primary key (prodcod));
CREATE TABLE item
(itemcodvenda number not null, itemcodprod number not null, itemquant number, itemvalor
number(15,2), primary key (itemcodvenda, itemcodprod));
GATILHOS
CRIE UM GATILHO QUE AJUSTA O PREÇO DO PRODUTO VENDIDO, NÃO PERMITINDO QUE SEJA VENDIDO POR VALOR MENOR DO CADASTRO + 15%:
CREATE OR REPLACE TRIGGER trig_ajusta_preco_venda BEFORE insert OR update ON item FOR EACH ROW DECLARE
varprecocompra produto.prodvalor%Type; BEGIN
SELECT prodvalor INTO varprecocompra FROM produto WHERE prodcod = :new.itemcodprod; IF :new.itemvalor < (varprecocompra * 1.15) THEN
:new.itemvalor := (varprecocompra * 1.15); END IF;
END; DISPARANDO O GATILHO:
INSERT INTO item VALUES(1, 1, 5, 2.5);
MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE GOIÁS
CAMPUS DE JATAÍ COORDENAÇÃO DOS CURSOS DE INFORMÁTICA
TÉCNICO INTEGRADO EM INFORMÁTICA
PROGRAMAÇÃO PARA BANCO DE DADOS
CRIE UM GATILHO QUE VERIFIQUE SE A QUANTIDADE DO PRODUTO A SER VENDIDA EXISTE NO ESTOQUE. SE EXISTIR ATUALIZE O ESTOQUE, SENÃO MOSTRE UAM MENSAGEM E CANCELE A OPERAÇÃO:
CREATE OR REPLACE TRIGGER tr_verifica_qtd_produto BEFORE insert ON item FOR EACH ROW DECLARE
varqtdestoque produto.prodquant%type; varnomeprod produto.proddesc%type;
BEGIN SELECT produto.prodquant, produto.proddesc INTO varqtdestoque,
varnomeprod FROM produto WHERE produto.prodcod = :new.itemcodprod;
IF varqtdestoque >= :new.itemquant THEN
UPDATE produto SET produto.prodquant = produto.prodquant -:new.itemquant WHERE produto.prodcod = :new.itemcodprod;
ELSE RAISE_APPLICATION_ERROR(-20000, ' O Saldo Do Produto ' || varnomeprod || ' É de: ' || TO_CHAR(varqtdestoque) || ' Não Atendendo O Solicitado.' );
END IF; END;
CRIE UM GATILHO QUE ATUALIZE O ESTOQUE DO PRODUTO, QUANDO FOR EXCLUIR UM REGISTRO DA TABELA “ITEM”:
CREATE OR REPLACE TRIGGER "GATILHO_EXCLUI_ITEM" BEFORE delete ON item FOR EACH ROW BEGIN
UPDATE produto SET produto.prodquant = produto.prodquant + :OLD.itemquant WHERE produto.prodcod = :OLD.itemcodprod;
END;
CRIE UM GATILHO QUE ANTES DE EXCLUIR UM UMA VENDA, EXCLUA TODOS SEUS ITENS:
CREATE OR REPLACE TRIGGER "GATILHO_EXCLUI_ITEM" BEFORE delete ON venda FOR EACH ROW BEGIN
DELETE FROM item WHERE itemcodvenda= :OLD.vencod; END;
CRIE UM GATILHO QUE ANTES DE INSERIR UM CLIENTE, VERIFIQUE SE O CÓDIGO DA CIDADE ONDE MORA EXISTE:
MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE GOIÁS
CAMPUS DE JATAÍ COORDENAÇÃO DOS CURSOS DE INFORMÁTICA
TÉCNICO INTEGRADO EM INFORMÁTICA
PROGRAMAÇÃO PARA BANCO DE DADOS
CREATE OR REPLACE TRIGGER insere_cliente BEFORE insert ON cliente FOR EACH ROW DECLARE varcidade number; BEGIN SELECT count(cidcod) INTO varcidade FROM cidade WHERE cidcod = :new.clicodcid; IF varcidade = 0 THEN RAISE_APPLICATION_ERROR(-20000, ' Código da cidade inválido!'); END IF;
END;
EXERCÍCIOS: 1. Crie um gatilho para que antes de EXCLUIR uma venda, exclua todos os registros dos itens
desta venda.
2. Crie um gatilho para que antes de EXCLUIR um registro na tabela item, atualize o valor total
da venda e o estoque do produto vendido.
3. Crie um gatilho para que antes de INSERIR um registro na tabela item, atualize o valor total
da venda e o estoque do produto vendido.