SóProvas


ID
2752105
Banca
FAURGS
Órgão
BANRISUL
Ano
2018
Provas
Disciplina
Banco de Dados
Assuntos

Considere a tabela EMPREGADOS e o gatilho definidos abaixo usando a sintaxe PL/SQL do Oracle.

create table EMPREGADOS
(codEmp integer not null primary key,
nome varchar(40) not null,
salario numeric(8,2) check (salario > 0),
codGerente integer,
foreign key (codGerente) references EMPREGADOS,
constraint EmpGer check(codEmp != codGerente ));

create or replace trigger GATILHO1
after insert or update of salario on empregados
declare vcount integer;
begin
     select count(*) into vcount
     from empregados e, empregados g
    where e.codGerente = g.codemp
        and e.salario >= g.salario;
    if vcount > 0
    then raise_application_error(-20001, 'Erro’);
    end if;
end;

Suponha que o modo auto-commit de execução esteja ativado, e, portanto, cada comando em isolado corresponde a uma transação. Considere a sequência de comandos SQL abaixo.

(1) insert into empregados values (1, ‘joao’, 2000, null);

(2) insert into empregados values (2, ‘paulo’, 500, 1);

(3) insert into empregados values (3, ‘maria’, 3500, null);

(4) update empregados set codGerente = 1, salario = 3000 where codEmp = 3;

(5) insert into empregados values (4, 'pedro', 3300, 3);

Usando-se os números dos comandos SQL acima, qual sequência de comandos SQL será executada sem falhas (isto é, sequência dos comandos que serão confirmados na base de dados)?

Alternativas
Comentários
  • O (4) não funcionará porque o trigger impede que o empregado tenha salário maior que o gerente.