Ответ
Misha v.3 28.01.2008 10:33
а разве не вариант? (куча плюсов, кстати, правда минусы тоже имеются).
или использовать UUID-ы для новых сущностей, когда делать их на клиенте. а когда они "полетят" в БД -- делать обход дерева от корня и будет вам счастье в виде имеющегося идентификатора родителя без лока таблицы.
ваш вариант (с суммированием для получения реального id родителя), в котором для начала надо бы поменять пункты 1 и 2, мне не нравится тем, что работать будет не всегда. например в oracle можно задать шаг инкремента id в "последовательности", и на одном из наших проектов он был != 1, т.е. подобное суммирование не подойдёт. это -- _пример_ когда не работает данный подход, а его суть в том, что "вычислением id родителя ведают два разных, не связанных друг с другом кода". неправильно это.