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

Asunto sobre triggers

Estas en el tema de Asunto sobre triggers en el foro de PostgreSQL en Foros del Web. ¿Se pueden declarar y usar funciones dentro del trigger ? Gracias...
  #1 (permalink)  
Antiguo 22/10/2009, 04:24
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 15 años, 5 meses
Puntos: 0
Exclamación Asunto sobre triggers

¿Se pueden declarar y usar funciones dentro del trigger ?
Gracias
  #2 (permalink)  
Antiguo 22/10/2009, 07:25
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Asunto sobre triggers

Declararlas no. Usarlas si.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 22/10/2009, 09:20
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asunto sobre triggers

¿Como se le llamaría a una función desde un trigger, por ejemplo? ¿ Usando que comando ? CALL, SELECT + Nombre de la función
  #4 (permalink)  
Antiguo 22/10/2009, 09:23
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Asunto sobre triggers

Depende del contexto y la forma de uso que se le de.

por ejemplo... si se requiere una funcion de suma, podría ser:

create function suma(parametro1 integer,parametro2 integer)
......
ETC.


Desde el trigger se llama común y corriente.

create trigger
......
declare
valor integer;
begin
valor = suma(3,5);
end
....
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 23/10/2009, 01:59
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asunto sobre triggers

y si es una función que no devuelve nada tambien se le llamaría de la misma manera ?
  #6 (permalink)  
Antiguo 23/10/2009, 04:46
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asunto sobre triggers

CREATE OR REPLACE FUNCTION nombre (inout entrada1 character(20), entrada character(1));

¿ Esta funcion a la hora de ejecutar como lo debería poner ?
DECLARE
obtener character(20) DEFAULT NULL;

BEGIN
obtener := nombre ('toma','r');
END;

Esto estaría bien sintacticamente ? y si tengo dos parámetros que sean de tipo inout como las obtendría sus valores ?
Al principio ponia en el cuerpo de la función "nombre('toma','r');" sin la asignación y me cascaba, responiendome el compilador lo siguiente:

ERROR: syntax error at or near "nombre"
LINE 1: nombre( $1 ....
^
QUERY: DETERMINA( $1 , $2 )
CONTEXT: SQL statement in PL/PgSQL function "trigger1" near line 27
  #7 (permalink)  
Antiguo 23/10/2009, 09:19
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Asunto sobre triggers

si solo se requiere ejecutar algo, se llama con select.

select nom_funcion(par1,par2);
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 06:39.