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

problema trigger mysql

Estas en el tema de problema trigger mysql en el foro de Mysql en Foros del Web. hola, he creado un procedimiento en mysql y funciona correctamente cuando lo utilizo de manera individual, mi problema esta en el trigger no me funciona ...
  #1 (permalink)  
Antiguo 17/08/2011, 23:49
 
Fecha de Ingreso: agosto-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
problema trigger mysql

hola, he creado un procedimiento en mysql y funciona correctamente cuando lo utilizo de manera individual, mi problema esta en el trigger no me funciona alguien puede orientarme donde tengo el error

CREATE TRIGGER manobra BEFORE INSERT ON contratos
FOR each row
begin
SET NEW.costoManoObra = calculaCosto(NEW.sueldoBase);
end$$

lo que intento hacer es que al insertar un contrato el trigger tome el valor de sueldoBase lo pase a la funcion y luego sea guardado en el campo costoManoObra

me marca el error "#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4 " que intuyo es de sintaxis pero no logro dar con el, desde ya muchas gracias
  #2 (permalink)  
Antiguo 18/08/2011, 04:04
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: problema trigger mysql

Un TRIGGER no puede invocar procedimientos ni funciones almacenadas. Es una restricción de MySQL a los TRIGGERs.
__________________
¿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 18/08/2011, 11:03
 
Fecha de Ingreso: agosto-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: problema trigger mysql

gracias por responder, he probado con lo siguiente

DELIMITER $$

USE `sibo`$$

CREATE TRIGGER manobra BEFORE INSERT ON contratos
FOR each row
begin
SET NEW.costoManoObra = (((NEW.sueldoBase*1.35)/192)*9);
end$$

me da el mismo error tampoco se pueden hacer calculos en los trigger??
  #4 (permalink)  
Antiguo 18/08/2011, 11:14
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: problema trigger mysql

Cálculos, si. Ahora bien, ese código no tiene ningún error de sintaxis. ¿Cómo lo estás cargando? ¿Con qué fornt-end?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 18/08/2011, 11:19
 
Fecha de Ingreso: agosto-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: problema trigger mysql

estoy probando con phpmyadmin, por alguna extraña razon no me funciona usando begin end he probado con

CREATE TRIGGER manobra BEFORE INSERT ON contratos
FOR EACH ROW SET NEW.costoManoObra = (((NEW.sueldoBase*1.35)/192)*9)

y ahy funciona correctamente muchas gracias por el tiempo y la ayuda.
  #6 (permalink)  
Antiguo 18/08/2011, 11:24
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: problema trigger mysql

Si, por eso te preguntaba.
En phpMyAdmin sólo se debe poner en la ventana de SQL el código completo del procedure o del trigger, e indicar en la celda del delimitador otro signo diferente, como por ejemplo $$". No se debe poner los DELIMITER, porque esos los pone el phpMyAdmin cuando codifica la sentencia, internamente.
__________________
¿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: sql, 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 03:21.