Hola,
1 -> estoy de acuerdo con el primer punto al 100%, soy relativamente nueva en la empresa y ya tienen el servidor contratado y demás cosas que aún no he tenido tiempo de "arreglar",... así que ya veremos cómo soluciono esto!
2 -> tienes algún link que contenga este listado? En el que yo he encontrado, la palabra 'password' no esta

y no se si es que es una lista vieja o que, mira:
http://dev.mysql.com/doc/refman/5.0/es/reserved-words.html
3 -> pues vaya, para las versiones 5.1.X si que me funcionaba el 'call' al procedimiento 'Fail' que comentaba :( ,... en fin. Aún así, con el insert directamente en lugar del fail tampoco funciona.
Código PHP:
CREATE TRIGGER user_no_repeat BEFORE INSERT ON user
FOR EACH ROW begin
if (select count(*) from user where login=new.login and password=new.password) > 0 then
insert into error (id_error, message, data_insert) values (null, "Repeated insert into user", now());
end if;
end
Muchas gracias!!!!