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

Trigger y tiempo de espera

Estas en el tema de Trigger y tiempo de espera en el foro de PostgreSQL en Foros del Web. Hola a todos..!! quisiera saber (y se q debe haber una forma) de hacer lo siguiente: tengo pensado crear un trigger el cual se ejecuta ...
  #1 (permalink)  
Antiguo 13/12/2007, 13:06
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Exclamación Trigger y tiempo de espera

Hola a todos..!! quisiera saber (y se q debe haber una forma) de hacer lo siguiente:

tengo pensado crear un trigger el cual se ejecuta despues de la actualizacion de una tabla, en el body de este trigger el debe esperar transcurra un tiempo y luego ejecutar ciertas sentencias sobre una tabla.

lo que realmente me importa es saber si hay una forma de hacer esperar en lenguaje sql para ejecutar algo... algo asi como el waitfor en server...

gracias por su ayudaa!!!
  #2 (permalink)  
Antiguo 13/12/2007, 13:48
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Trigger y tiempo de espera

Hola, me inquieta el por que de queres hacer esperar dentro de un trigger?

pg_sleep(seconds);

Un saludo
  #3 (permalink)  
Antiguo 14/12/2007, 07:03
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Trigger y tiempo de espera

hola...! creo q la funcion q dices es sleep(seconds=5) que esta en el manual de postgre...
lo tengo de la siguiente manera:

CREATE OR REPLACE FUNCTION flogout() RETURNS trigger AS
$body$
sleep(seconds=5);
update t_administrador set tx_status='off' where co_admin='VIEIRAMS';
$body$
LANGUAGE sql;



CREATE TRIGGER logoutadmin after UPDATE ON t_administrador
FOR EACH ROW EXECUTE PROCEDURE flogout();


me da un error cerca del sleep.. imagino no reconoce la funcion, es mas! creo q con lenguaje sql no se puede... xq la quito de la funcion y me dice q las funciones sql no pueden devolver trigger.... y ahora?? guat kenai du?
  #4 (permalink)  
Antiguo 14/12/2007, 09:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Trigger y tiempo de espera

si.... segun lo q acabo de ver el lenguaje debe ser plpgsql, como no lo tenia disponible (no existe tal lenguaje) que aparte es uno de los q me permite crear funciones q devuelvan tipo de dato trigger, trate de colocarlo con CREATE LANGUAGE plpgsql; pero no tengo permisos... ERROR: must be superuser to create procedural language

entonces.. por ahora estoy a la espera del permiso de mi tutor.. ademas... al tratar de crear una funcion en lenguaje C tampoco puedo... lenguaje C no tiene permisos... imagino es por cuestiones de seguridad logica aki..

cualquier forma alternativa que tengan en sus manos y deseen compartirla con todo gusto... =D estoy pendiente..

La idea original era la siguiente: tengo una tabla para administradores de la aplicacion, un admin no puede ingresar desde 2 lugares al mismo tiempo.. por lo q hay un status on/off para controlar eso.
- Al ingresar al sistema el estado cambia a on... pero al cerrar la ventana o irse la luz por ej.. ese estado no puede ser cambiado en la bd. Por lo que::

pienso crear un un trigger que al actualizar la tabla adminitrador se dispara, contando un tiempo de 10 min... en caso que el admi cierre la aplicacion ese tiempo corre.. y al llegar a su fin... se cambia su status a off... de forma garantizar la idea principal.

OIGO SUGERENCIAS....
  #5 (permalink)  
Antiguo 19/12/2007, 09:08
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Trigger y tiempo de espera

Tienes que usar pl.
La funcion es sleep(seconds) ==> sleep(5);


Un saludo
  #6 (permalink)  
Antiguo 19/12/2007, 09:12
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Trigger y tiempo de espera

Cita:
Iniciado por metallicaos Ver Mensaje

La idea original era la siguiente: tengo una tabla para administradores de la aplicacion, un admin no puede ingresar desde 2 lugares al mismo tiempo.. por lo q hay un status on/off para controlar eso.
- Al ingresar al sistema el estado cambia a on... pero al cerrar la ventana o irse la luz por ej.. ese estado no puede ser cambiado en la bd. Por lo que::

pienso crear un un trigger que al actualizar la tabla adminitrador se dispara, contando un tiempo de 10 min... en caso que el admi cierre la aplicacion ese tiempo corre.. y al llegar a su fin... se cambia su status a off... de forma garantizar la idea principal.

OIGO SUGERENCIAS....
Pero a los 10 minutos, el trigger lo marcara como off, y podrá entrar desde otro sitio, no? (independientemente de que haya cerrado el navegador o siga conectado)

¿El admin tiene un usuario propio en la BD?

Un saludo
  #7 (permalink)  
Antiguo 19/12/2007, 09:37
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Trigger y tiempo de espera

si.. en efecto.. a los 10 min el lo pone en off... q pasa?--> que el administrador al seguir haciendo uso del sistema... ese "contador" de 10 min se reinicia. Ya al pasar 10 min de inactividad el cambia su estado a off.

si fuese el caso q se accediera de otro lugar con esa misma cuenta.... al tratar de logearse sale un mensaje como "ya ha iniciado session desde otro lugar" para evitar el traspaso de claves o cuentas. de todas maneras al pasar 10 min de inactividad (cambia el estado) y si trata de refrescar la pagina... o hacer algun evento.. el sistema lo direcciona a la pagina de logeo...

gracias..! estoy a la espera de poder crear el lenguaje para probar la cuestion. tengo mucha curiosidad por hacerlo pero bue... hasta no tener el permiso no puedo sino probar otras formas alternativas.... acepto cualquier sugerencia.!!! gracias
  #8 (permalink)  
Antiguo 19/12/2007, 10:09
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Trigger y tiempo de espera

Bueno para lo que quieres no te sirve pg_sleep, ya que "duerme" la sesion, no puedes seguir utilizando la misma conexion para la BD.

Si me cuentas algo más, igual encontramos una solucion. Por ejemplo, version de BD? el usuario admin tiene usuario en la BD? ...

Un saludo
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:35.