Questão 1306724

Tecnologia da Informação · 2014

Questão

ID 1306724

Disciplina: Tecnologia da Informação

Assunto: Triggers

Ano: 2014 Banca: FCC - Fundação Carlos Chagas Órgão: Tribunal Regional do Trabalho da 13ª Região


Em um ambiente de banco de dados Oracle 11g ideal, foram criadas duas tabelas por meio das instruções PL/SQL a seguir:

CREATE TABLE orders (order_id NUMBER PRIMARY KEY, line_items_count NUMBER DEFAULT 0 );

CREATE TABLE lineitems (order_id REFERENCES orders, seq_no NUMBER, CONSTRAINT lineitems PRIMARY

KEY(order_id,seq_no) );

Foi criada, relacionada às tabelas, a seguinte trigger, colocada em execução:

CREATE OR REPLACE TRIGGER lineitems_trigger

AFTER INSERT OR UPDATE OR DELETE ON lineitems

FOR EACH ROW

BEGIN

IF (INSERTING OR UPDATING)

THEN

UPDATE orders SET line_items_count = NVL(line_items_count,0)+1

WHERE order_id = :new.order_id;

END IF;

IF (DELETING OR UPDATING)

THEN

UPDATE orders SET line_items_count = NVL(line_items_count,0)-1

WHERE order_id = :old.order_id;

END IF;

END;

/

Em seguida, foram executadas as instruções abaixo, nesta ordem:

INSERT INTO orders (order_id) VALUES (78);

INSERT INTO orders(order_id) VALUES (92);

INSERT INTO lineitems (order_id, seq_no) VALUES (78,1);

INSERT INTO lineitems (order_id, seq_no) VALUES (78,2);

SELECT * FROM orders;

Considere:

I. Ao executar a instrução INSERT INTO orders (order_id) VALUES (78); a trigger incrementou o valor contido no campo line_items_count passando de 0 para 1. passando de 0 para 1.

II. Ao executar a instrução INSERT INTO lineitems (order_id, seq_no) VALUES (78,1); a trigger incrementou o valor contido no campo line_items_count da tabela orders passando de 0 para 1. da tabela orders passando de 0 para 1.

III. Ao executar a instrução INSERT INTO lineitems (order_id, seq_no) VALUES (78,2); a trigger incrementou o valor contido no campo line_items_count da tabela orders passando de 1 para 2. da tabela orders passando de 1 para 2.

IV. A instrução SELECT * FROM orders; mostrará no campo line_items_count da linha cujo order_id é 78 o valor 3.

Está correto o que consta APENAS em

Alternativas da questão 1306724
Pular para o conteúdo principal