PostgreSQL - Trigger Crea Roles

   
Vista:

Trigger Crea Roles

Publicado por Izrrael Sandrea (3 intervenciones) el 10/03/2009 16:56:27
Mi problema es el siguiente, quiero hacer un blindaje de base de datos, es decir, quiero que cada vez que agregue un nuevo usuario a mi sistema se agregue un rol para ese usuario a la base de datos de postgres, ahora bien, me parecio que la mejor forma de hacerlo era por medio de un trigger que ejecute una funcion luego del insert utilizado para la tabla Usuarios del sistema,

Estoy intentando hacerlo de esta forma:

CREATE OR REPLACE FUNCTION sp_crear_roles() RETURNS trigger AS $trigger_crear_roles$

BEGIN

CREATE ROLE new.usuario;

RETURN NEW;
END;
$trigger_crear_roles$ LANGUAGE plpgsql;

Pero me da el siguiente error:

ERROR: error de sintaxis en o cerca de «$1»
LINE 1: CREATE ROLE $1
^
QUERY: CREATE ROLE $1
CONTEXT: SQL statement in PL/PgSQL function "sp_crear_roles" near line 4

********** Error **********

ERROR: error de sintaxis en o cerca de «$1»
SQL state: 42601
Context: SQL statement in PL/PgSQL function "sp_crear_roles" near line 4

Ahora bien, segun veo el problema es que no parece aceptarme ningun tipo de parametro, porque intente hacerlo usando una variable y consegui el mismo problema.

Si saben como podria hacerlo se los agradezco..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Trigger Crea Roles

Publicado por alejandro (29 intervenciones) el 14/03/2009 18:01:03
Hola lo que sucede es que no puedes crear un rol de esa forma en ese tiempo ya que es un comando dll. Existe un comando para que lo puedas crear ahi pero no lo recuerdo ahorita. Yo te recomendaria que por tu mismo sistema le mandes la sentencia de crecion de rol. Utiliza el autocommit false para que tengas la integridad.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Trigger Crea Roles

Publicado por Izrrael Sandrea (3 intervenciones) el 16/03/2009 14:18:39
Que Tal Alejandro, El problema es el siguiente, cuando intento crear el Rol mediante el sistema el sistema, usando adodb, no genera errores porque la ejecución no pueda hacerla por el Metodo Execute que devuelve los AffectedRows ni por el ExecuteQuery que Devuelve un RecordSet. Si logras recordar el comando para crearlo desde el trigger te lo agradecería.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Trigger Crea Roles

Publicado por alejandro (29 intervenciones) el 03/04/2009 20:11:19
Utiliza el execute cada vez que utilizes las sentencias

CREATE OR REPLACE FUNCTION sp_crear_roles3()
RETURNS trigger AS
$BODY$

BEGIN
execute 'CREATE ROLE ' || new.usuario;
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION sp_crear_roles3() OWNER TO postgres;


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Trigger Crea Roles

Publicado por Izrrael (3 intervenciones) el 03/04/2009 22:38:45
EXCELENTE!!! Muy Agradecido!! Me funciono' perfectamente!!

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Trigger Crea Roles

Publicado por Tre (1 intervención) el 02/06/2009 19:22:22
Trigger no es el amigo de Winnie the pooh ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar