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

no me compila!!! ayuda MYSQL

Estas en el tema de no me compila!!! ayuda MYSQL en el foro de Mysql en Foros del Web. hola amigos del web me acerco a ustedes para pedirles su ayuda, no puedo compilar este trigger por mas que busco el error de syntaxis ...
  #1 (permalink)  
Antiguo 27/10/2008, 07:09
 
Fecha de Ingreso: octubre-2008
Mensajes: 67
Antigüedad: 15 años, 6 meses
Puntos: 0
no me compila!!! ayuda MYSQL

hola amigos del web

me acerco a ustedes para pedirles su ayuda, no puedo compilar este trigger por mas que busco el error de syntaxis no lo encuentro espero tengan mejor ojo que yo
ejejje... esto lo quiero hacer funcionar en MYSQL

saludos

aquí!! le dejo parte del codigo

CREATE TRIGGER prueba BEFORE UPDATE ON td_persona
FOR EACH ROW
BEGIN
DECLARE maximo int(11);
SET maximo =(SELECT MAX(audi_id) FROM ts_auditoria);
end;
if(:old.pers_rut <> :new.pers_rut)then
begin
INSERT INTO ts_auditoria(audi_id,audi_ip,audi_fecha,audi_tabla ,audi_campo, audi_valor_anterior, audi_valor_actual) VALUES(maximo,'255.255.255.0',(DATE_FORMAT(now(),' %Y/%m/%d')),,'pers_rut', :old.pers_rut,:new.pers_rut);
end if;
  #2 (permalink)  
Antiguo 27/10/2008, 08:44
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: no me compila!!! ayuda MYSQL

Estás dejando una parte del código fuera del cuerpo del trigger, colocando un campo que no estás ingresando y además poniendo un caracter cuya utilidad yo no conozco en MySQL (":").
El cuerpo del trigger (como el de los SP o las funciones), se encierra en un conjunto delimitador por BEGIN/END, los cuales no pueden anidarse NUNCA.
El código quedaría mas o menos así (sólo para consola, si usas otra cosa debes decirlo):
Código sql:
Ver original
  1. DELIMITER $$
  2. FROP TRIGGER IF EXISTS prueba$$
  3. CREATE TRIGGER prueba BEFORE UPDATE ON td_persona
  4. FOR EACH ROW
  5. BEGIN
  6. DECLARE maximo INT(11);
  7. SET maximo =(SELECT MAX(audi_id) FROM ts_auditoria);
  8. IF (OLD.pers_rut <> NEW.pers_rut) THEN
  9.  INSERT INTO ts_auditoria(audi_id,audi_ip,audi_fecha,audi_tabla ,audi_campo,  audi_valor_anterior, audi_valor_actual)
  10. VALUES(maximo,'255.255.255.0',(DATE_FORMAT(now(),' %Y/%m/%d')),NULL,'pers_rut', OLD.pers_rut,NEW.pers_rut);
  11. END IF;
  12. END$$
  13. DELIMITER ;
__________________
¿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 27/10/2008, 13:14
 
Fecha de Ingreso: octubre-2008
Mensajes: 67
Antigüedad: 15 años, 6 meses
Puntos: 0
De acuerdo Respuesta: no me compila!!! ayuda MYSQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Estás dejando una parte del código fuera del cuerpo del trigger, colocando un campo que no estás ingresando y además poniendo un caracter cuya utilidad yo no conozco en MySQL (":").
El cuerpo del trigger (como el de los SP o las funciones), se encierra en un conjunto delimitador por BEGIN/END, los cuales no pueden anidarse NUNCA.
El código quedaría mas o menos así (sólo para consola, si usas otra cosa debes decirlo):
Código sql:
Ver original
  1. DELIMITER $$
  2. FROP TRIGGER IF EXISTS prueba$$
  3. CREATE TRIGGER prueba BEFORE UPDATE ON td_persona
  4. FOR EACH ROW
  5. BEGIN
  6. DECLARE maximo INT(11);
  7. SET maximo =(SELECT MAX(audi_id) FROM ts_auditoria);
  8. IF (OLD.pers_rut <> NEW.pers_rut) THEN
  9.  INSERT INTO ts_auditoria(audi_id,audi_ip,audi_fecha,audi_tabla ,audi_campo,  audi_valor_anterior, audi_valor_actual)
  10. VALUES(maximo,'255.255.255.0',(DATE_FORMAT(now(),' %Y/%m/%d')),NULL,'pers_rut', OLD.pers_rut,NEW.pers_rut);
  11. END IF;
  12. END$$
  13. DELIMITER ;

hola gnzsoloyo gracias por responder bueno este trigger lo estoy haciendo
en MYSQL QUERY BROWSER perdon por no decirlo

gracias
  #4 (permalink)  
Antiguo 27/10/2008, 13:48
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: no me compila!!! ayuda MYSQL

Entonces el script tal y como te lo puse en el post debería correr sin problemas, en tanto no haya algún error de sintaxis que se me haya pasado por alto.
Simplemente pegalo en una solapa de Script (no de Result) y ejecútalo desde allí.
En el MySQL Query Browser no se puede usar el DELIMITER desde la ventana de ejecución directa. Sí puedes hacerlo creando un script SQL y corriéndolo como te digo.
__________________
¿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 27/10/2008, 14:23
 
Fecha de Ingreso: octubre-2008
Mensajes: 67
Antigüedad: 15 años, 6 meses
Puntos: 0
Sonrisa Respuesta: no me compila!!! ayuda MYSQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Entonces el script tal y como te lo puse en el post debería correr sin problemas, en tanto no haya algún error de sintaxis que se me haya pasado por alto.
Simplemente pegalo en una solapa de Script (no de Result) y ejecútalo desde allí.
En el MySQL Query Browser no se puede usar el DELIMITER desde la ventana de ejecución directa. Sí puedes hacerlo creando un script SQL y corriéndolo como te digo.
gracias gnzsoloyo lo hare como dices espero corra ya que tengo que insertar mas campos a este trigger saludos
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 17:35.