а левел зачем хранят? всегда обходился парентидом и позишном, а левел по ходу рекурсии вычисляется. это получается если его в базе хранить, то при переносе узла из одного места в другое, нужно вычислять его новый левел, и если он изменился, то менять для него и всех его дочерних