Considere a tabela EMPREGADOS e o gatilho definidos abaixo ...
Próximas questões
Com base no mesmo assunto
Ano: 2018
Banca:
FAURGS
Órgão:
BANRISUL
Prova:
FAURGS - 2018 - BANRISUL - Administração de Bancos de Dados |
Q917366
Banco de Dados
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)?
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)?