Във вашия оператор INSERT в тригера Libary_Update имате следния ред:
WHERE subtree.`ancestor` = NEW.`iD`
но не актуализирате полето за ID, така че не мисля, че ще имате стойност NEW.iD. Трябва ли този ред евентуално да използва OLD.iD вместо това?