O analista Juca precisa criar um esquema no banco de dados processos e atribuir direitos para o perfil ad1. Para isso, com o perfil dadosadm, Juca definiu os seguintes passos: 1. criar o esquema processos; e 2. atribuir ao perfil ad1 o direito de apagar os registros das tabelas do esquema processos, criados por dadosadm, podendo usar alguma condição. No PostgreSQL, para implementar os passos definidos, Juca deve executar os comandos:
- A)CREATE SCHEMA processos; CREATE PRIVILEGES FOR ROLE dadosadm IN SCHEMA processos GRANT TRUNCATE ON TABLES TO ad1;
Errada, porque CREATE PRIVILEGES nao existe nessa forma no PostgreSQL e TRUNCATE nao equivale ao direito de apagar registros com condicao.
- B)SET SCHEMA processos; SET DEFAULT PRIVILEGES FOR ROLE dadosadm IN SCHEMA processos GRANT USAGE ON TABLES TO ad1;
Errada, porque SET SCHEMA e SET DEFAULT PRIVILEGES nao fazem essa operacao como escrita na alternativa, e USAGE nao concede apagar registros.
- C)INSERT SCHEMA processos GRANTED BY dadosadm; GRANT UPDATE FOR ROLE dadosadm IN SCHEMA processos;
Errada, porque INSERT SCHEMA e GRANT UPDATE FOR ROLE nao correspondem a comandos validos para criar schema e conceder exclusao de linhas.
- D)CREATE SCHEMA processos AUTHORIZATION dadosadm; ALTER DEFAULT PRIVILEGES FOR ROLE dadosadm IN SCHEMA processos GRANT DELETE ON TABLES TO ad1;
Certa, porque cria o schema com authorization de dadosadm e define privilegios padrao de DELETE para ad1 nas tabelas futuras do schema.
- E)BEGIN SCHEMA processos; SET PRIVILEGES FOR ROLE dadosadm IN SCHEMA processos REVOKE TRUNCATE ON TABLES TO ad1;
Errada, porque BEGIN SCHEMA e SET PRIVILEGES nao sao comandos validos para esse objetivo e REVOKE faz o inverso de conceder.
Gabarito: D
Em PostgreSQL, criar um esquema e ajustar permissões para objetos futuros costuma exigir duas ideias separadas: primeiro, criar o schema; depois, definir privilégios padrão para as tabelas que ainda serao criadas nele. O comando CREATE SCHEMA processos AUTHORIZATION dadosadm faz com que o schema fique associado ao dono informado, o que combina com a ideia de os objetos serem criados por dadosadm. No segundo passo, o ponto-chave e que o privilegio pedido e de apagar registros, e isso, no SQL, normalmente significa o direito DELETE sobre tabelas. Como a questao fala em tabelas do schema processos criadas por dadosadm, o comando correto precisa mexer nos privilegios padrao, para valer para futuras tabelas desse autor. Em PostgreSQL, isso e feito com ALTER DEFAULT PRIVILEGES FOR ROLE dadosadm IN SCHEMA processos GRANT DELETE ON TABLES TO ad1. Repare na sutileza: GRANT em tabelas existentes e uma coisa; DEFAULT PRIVILEGES e outra, usada para o que ainda vai nascer. A banca costuma cobrar exatamente essa diferenca, porque ela separa o candidato que sabe o nome do comando daquele que sabe quando usar o comando certo. Por isso, o gabarito D esta correto: ele cria o schema com o dono adequado e concede, como privilegio padrao, o direito DELETE ao perfil ad1 nas tabelas que forem criadas por dadosadm dentro do schema processos. Esse raciocinio esta alinhado com a sintaxe oficial do PostgreSQL para schemas e default privileges.