Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/10/2008, 06:30
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 2 meses
Puntos: 2658
Respuesta: Trigger mysql

Hubieras comenzado por allí.
MySQL 4.1.22 no soporta triggers... Los triggers fueron implementados en la versión 5 a partir de la release 5.0.2
Ante cualquier duda, leer el manual de referencia de las versión 4.1.22: 1.8.5.4. Stored Routines and Triggers.

Respecto a la sintaxis de lo que te puse, tienes que mirar con cuidado tu mismo y ver si se desliza algún error que yo no me percatara.
Fijate que en la línea 9 no cerré bien la sentencia. Le está faltando el ";" final.
Además yo simplemente copié tu ejemplo sin mirar bien, y en realidad estaba muy mal escrita: SET es una clausula de UPDATE, no de INSERT, y en el INSERT, a menos que impliques todos los campos del registro, debes definri a qué campos ingresaras los valores.
La sintaxis correcta sería:

Código SQL:
Ver original
  1. DELIMITER $$
  2. DROP TRIGGER IF EXISTS projectes$$
  3. CREATE TRIGGER `projectes` AFTER INSERT OR UPDATE ON projects
  4. FOR EACH ROW
  5. BEGIN
  6. INSERT INTO projects_log(project_id, project_short_name, project_creation)
  7. VALUES (NEW.project_id, NEW.project_short_name,TIMESTAMP( ) );
  8. END$$
  9. DELIMITER ;

Si lo que debes hacer es actualizar, la cosa sería mas o menos así:


Código SQL:
Ver original
  1. DELIMITER $$
  2. DROP TRIGGER IF EXISTS projectes$$
  3. CREATE TRIGGER `projectes` AFTER INSERT OR UPDATE ON projects
  4. FOR EACH ROW
  5. BEGIN
  6. INSERT INTO projects_log(project_id, project_short_name, project_creation)
  7. VALUES (NEW.project_id, NEW.project_short_name,TIMESTAMP( ) )
  8. ON DUPLICATE KEY UPDATE project_creation = TIMESTAMP( ) ;
  9. END$$
  10. DELIMITER ;

En este caso estoy suponiendo que project_id Y project_short_name no cambian en la actualización, sino solamente la fecha del proyecto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 16/10/2008 a las 06:41