En su declaración INSERT en el activador Libary_Update, tiene la siguiente línea:
WHERE subtree.`ancestor` = NEW.`iD`
pero no está actualizando el campo ID, por lo que no creo que tenga un valor NEW.iD. ¿Debería esa línea usar OLD.iD en su lugar?