Informática, perguntado por FaustoCamargo, 1 ano atrás

Crie uma tabela com: ID do produto, nome do produto, valor real do produto e valor do produto com juros. Após criar a tabela crie um trigger associada a tabela produtos, tomando o valor real do produto como referência, para incrementar 5% a mais no valor do produto com juros. Após criar a trigger povoe a tabela com 5 Itens.

Soluções para a tarefa

Respondido por matheusoliveirp5k3m4
0

Criação da tabela:

CREATE TABLE PRODUTOS (

ID INTEGER,

NOME VARCHAR(150),

VALOR_REAL DECIMAL (18,2),

VALOR_JUROS DECIMAL (18,2));

Criação da Trigger:

SET TERM ^ ;

CREATE OR ALTER TRIGGER TRG_CALCULA_JUROS FOR PRODUTOS

ACTIVE AFTER INSERT POSITION 0

AS

DECLARE trgrDone VARCHAR(255);

begin

trgrDone = NULL;

  -- VERIFICA SE A TRIGGER JÁ NÃO ESTÁ SENDO EXECUTADA! PREVINE O ERRO DE UM UPDATE COM LOOP INFINITO!

   IF(trgrDone IS NULL)THEN BEGIN

    rdb$set_context('USER_TRANSACTION', 'Foo', 1);

     UPDATE PRODUTOS  

     SET valor_juros = valor_real + ((5 * valor_real) / 100)

     WHERE ID = (SELECT MAX(ID) FROM PRODUTOS);

   END

end

^

SET TERM ; ^

Povoamento da tabela:

insert into produtos

values(1, 'CAMISETA', 15.50, null);

insert into produtos

values(2, 'CANECA', 5.70, null);

insert into produtos

values(3, 'JAQUETA', 150.90, null);

insert into produtos

values(4, 'MOLETOM', 50.00, null);

insert into produtos

values(5, 'LUVA', 9.10, null);

Observações finais:

1 - Note que, sempre que inserido um produto novo na tabela, precisamos informar manualmente seu código ID (primeiro valor da linha "VALUES (...) após o INSERT"). Para que isso seja resolvido, recomenda-se o uso de um Generator (função atrelada a uma trigger da tabela na operação de INSERT, responsável por criar uma numeração automática para algum campo - neste caso seria o ID - ).

2 - Interpretando seu problema, a  trigger para calcular os juros só irá funcionar quando um produto for INSERIDO na tabela. Caso ele seja atualizado por meio de um update por exemplo, ele não terá seu valor de juros atualizado.

Perguntas interessantes