› Fóruns › Banco de dados Oracle › Trigger cria usuario › Trigger cria usuario
@anderson.silva Boa tarde..!
Bom.. não é complicado fazer isto.. mas imagina para gerenciar tantos usuários.. vc terá um baita trabalhão…
Criação de Usuário após insert:
Ex: Você vai precisar de 1 procedure e 1 trigger em cima da sua tabela de usuários… Ambos os objetos precisam ser criados com o usuário SYS, devido ao grant para criar usuários..
Vamos a Procedure:
CREATE OR REPLACE PROCEDURE CRIAR_USUARIO ( USUARIO VARCHAR, SENHA VARCHAR )
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
EXECUTE IMMEDIATE 'CREATE USER ' || USUARIO || ' IDENTIFIED BY "' || SENHA || '" TEMPORARY TABLESPACE TEMP' ;
END;
Vamos a Trigger:
CREATE OR REPLACE TRIGGER TR_CRIAR_USUARIO
AFTER INSERT ON .USERS
FOR EACH ROW
BEGIN
CRIAR_USUARIO( :new.USERS, :new.PASS);
END;
Motivo pelo qual precisa de uma procedure, é que o parametro “CREATE USER” possui commit implicito e não se pode dar commit em trigger, por este motivo foi criado em uma procedure…
Agora com relação aos Grants.. É a mesma ideia.. porém na sua procedure você irá precisar criar um CURSOR para poder ir dando os Grants automaticamente..
Mas eu seria mais didático.. criaria uma ROLE com as permissões definidas apenas daria o Grant da Role ao usuário…
Abraços..!