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

Error en los trigger

Estas en el tema de Error en los trigger en el foro de Mysql en Foros del Web. Tengo un pequeño problema a la hora de crear los trigger. Los creo a partir de una funcion previamente cerada y el error me lo ...
  #1 (permalink)  
Antiguo 01/02/2010, 02:07
 
Fecha de Ingreso: febrero-2010
Mensajes: 18
Antigüedad: 14 años, 2 meses
Puntos: 0
Error en los trigger

Tengo un pequeño problema a la hora de crear los trigger. Los creo a partir de una funcion previamente cerada y el error me lo da ahi, en la cabecera de la funcion, me dice que compruebe la sintaxis de la linea 1.
Si por el contrario, lo meto todo en el trigger, al ejecutarlo me da varios errores aunque son todos el mismo que el anterior.
El trigger es (os pongo el mas sencillo de todos):

CREATE OR REPLACE FUNCTION fnc_finalizar_tarea() RETURNS TRIGGER AS '
DECLARE
nficheros INTEGER;
BEGIN
SELECT COUNT(*) INTO nficheros
FROM ficheros f
WHERE f.cod_tarea = OLD.codigo;

IF nficheros >0 THEN
UPDATE tareas SET finalizado = true WHERE codigo = OLD.codigo;
ELSE
RAISE EXCEPTION "ERROR: No puede finalizar la tarea si no ha adjuntado un acta de la misma previamente.";
END IF;
RETURN NEW;
END;
' language 'plpgsql';

CREATE TRIGGER tgr_finalizar_tarea
BEFORE UPDATE ON tareas
FOR EACH ROW
EXECUTE PROCEDURE fnc_finalizar_tarea();


y el error que me produce es (que como digo, es siempre el mismo):

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right sintax to use near ' ...............' at line 1

gracias por vuestra ayuda.
saludos!!
  #2 (permalink)  
Antiguo 01/02/2010, 06:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error en los trigger

Vamos por partes:
1) Un stored function es una rutina que devuelve un único valor, es decir devuelve un dato de tipo valido en MySQL. No devuelve rutinas ni llamadas a procesos.
2) RAISE no es comando, sentencia ni cláusula de MYSQL.
3) OLD es una pseudovariable que sólo existe en los TRIGGERs que controlan UPDATEs.
4) nficheros es, en tu contexto, una variable local no declarada, que dejará de existir en el momento de terminarse la ejecución de la rutina. El dato se perderá.
5)Realizar un TRIGGER que realice escaneos de tabla en cada inserción, es, por lo menos, ineficiente y redundará en pérdida de performance, la que irá incrementando a medida que la/s tabla/s escaneada sea mayor.

¿Qué es exactamente lo que estás tratando de obtener?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 02/02/2010, 01:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 18
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Error en los trigger

lo que intento es lo siguiente: se trata de una serie de tareas a realizar, una vez realizada una tarea, esta debera actualizar su campo finalizado (booleano e inicialmente false) a true pero esto no sera posible si la tarea en cuestion no tiene, al menos, un fichero asociado. en la tabla ficheros almacenamos la direccion fisica del fichero y el codigo del la tarea a la que se vincula
  #4 (permalink)  
Antiguo 02/02/2010, 03:33
 
Fecha de Ingreso: febrero-2010
Mensajes: 18
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Error en los trigger

ok, ya lo tengo, resulta que como tengo hecho el trigger es para postgreSQL y no para MySql...

gracias por la ayuda
  #5 (permalink)  
Antiguo 02/02/2010, 06:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error en los trigger

Ajá, ¿y en qué estás trabajando? ¿Postgre o MySQL?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: 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.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:37.