Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Instruccion ddl dentro de un trigger, como ejecutar CREATE USER dentro de un trigger

Estas en el tema de Instruccion ddl dentro de un trigger, como ejecutar CREATE USER dentro de un trigger en el foro de Oracle en Foros del Web. Hola como estan, tengo un serio problema para crear un trigger que me permita crear un usuario dentro de la base de datos cada que ...
  #1 (permalink)  
Antiguo 29/05/2012, 11:21
 
Fecha de Ingreso: mayo-2012
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Exclamación Instruccion ddl dentro de un trigger, como ejecutar CREATE USER dentro de un trigger

Hola como estan, tengo un serio problema para crear un trigger que me permita crear un usuario dentro de la base de datos cada que yo agrege una persona les envio mi codigo el problema es que no me deja ejecutar la sentencia de CREATE USER dentro del trigger
si logro crear el usuario despues debo asignarle los privilegios que tiene el rol ESTUDIANTE (con GRANT)que ya cree y le asigne los privilegios sobre lo que necesito


create or replace
trigger CREAR_USER_ORA_EST before INSERT ON ESTUDIANTE
FOR EACH ROW
BEGIN
create user :new.cod_est identified by :new.login;
GRANT ESTUDIANTE TO :new.cod_est;
END;


Leí sobre una instruccióm
pragma autonomous_transaction;
pero dentro del disparador como que no me funciona, estoy trabajando con oracle 10g express edition

por favor si me pueden ayudar con esto, es para un asignatura de hecho para el proyecto final de esta.
  #2 (permalink)  
Antiguo 29/05/2012, 15:07
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 6 meses
Puntos: 43
Respuesta: Instruccion ddl dentro de un trigger, como ejecutar CREATE USER dentro de

Usa EXECUTE IMMEDIATE
  #3 (permalink)  
Antiguo 31/05/2012, 08:55
 
Fecha de Ingreso: mayo-2012
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Instruccion ddl dentro de un trigger, como ejecutar CREATE USER dentro de

podrias ayudarme en como queda el codigo que tengo en la parte de arriba con esta instruccion???? ,............. de todas maneras estare intantando de esta manera sino creo que creare un procedimiento y lo llamare en el disparador.
  #4 (permalink)  
Antiguo 14/06/2013, 12:29
 
Fecha de Ingreso: junio-2013
Mensajes: 1
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Instruccion ddl dentro de un trigger, como ejecutar CREATE USER dentro de

Sé que es muy tarde mi respuesta pero llegué aquí porque también buscaba la misma solución y la encontré, además si otros también que tienen el mismo problema y se encuentran con esta publicación espero que mi respuesta les sea de ayuda.

En si tenías razón en lo de PRAGMA AUTONOMOUS_TRANSACTION lo único que faltaba es que la sentencia lo guardes en una variable y luego la ejecutes.. así por ejemplo:

CREATE OR REPLACE TRIGGER trg_crear_usuario
after insert on tabla_usuarios
for each row
declare
PRAGMA AUTONOMOUS_TRANSACTION;
v_sql varchar2(1000);
begin
v_sql:='CREATE USER '||:new.usuario||' IDENTIFIED BY '||:new.contrasenia;
execute immediate v_sql;
commit;
end;

Por lo que cada que insertes este trigger ejecutara la variable v_sql , que esta tiene la sentencia sql que queremos.
y Listo!
(:

Etiquetas: autonomous_transaction, ddl, instruccion, oracle10g, pragma, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:58.