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 originalDELIMITER $$
DROP TRIGGER IF EXISTS projectes$$
CREATE TRIGGER `projectes` AFTER INSERT OR UPDATE ON projects
FOR EACH ROW
BEGIN
INSERT INTO projects_log(project_id, project_short_name, project_creation)
VALUES (NEW.project_id, NEW.project_short_name,TIMESTAMP( ) );
END$$
DELIMITER ;
Si lo que debes hacer es actualizar, la cosa sería mas o menos así:
Código SQL:
Ver originalDELIMITER $$
DROP TRIGGER IF EXISTS projectes$$
CREATE TRIGGER `projectes` AFTER INSERT OR UPDATE ON projects
FOR EACH ROW
BEGIN
INSERT INTO projects_log(project_id, project_short_name, project_creation)
VALUES (NEW.project_id, NEW.project_short_name,TIMESTAMP( ) )
ON DUPLICATE KEY UPDATE project_creation = TIMESTAMP( ) ;
END$$
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.