Тег формы не поддерживает метод patch. Он должен быть либо получен, либо опубликован
Определение одной из рассматриваемых таблиц:
Table "knowledgebase.section"
Column | Type | Modifiers
----------------------------+--------------------------+-----------------------------------------------------------------------------
section_sid | integer | not null default nextval('knowledgebase.section_section_sid_seq'::regclass)
section | character varying | not null
description | character varying |
path | ltree | not null
is_active | boolean | not null default true
role_sid | integer | not null
last_modified_by | integer | not null
creation_datetime | timestamp with time zone | not null default now()
last_modification_datetime | timestamp with time zone | not null default now()
is_expanded | boolean | not null default false
section_idx | tsvector |
Indexes:
"section_sid_pkey" PRIMARY KEY, btree (section_sid)
"section_section_key" UNIQUE, btree (section)
"idxsection_idx" gist (section_idx)
"path_gist_idx" gist (path)
Foreign-key constraints:
"last_modified_by_fkey" FOREIGN KEY (last_modified_by) REFERENCES "user"."role"(role_sid) ON UPDATE CASCADE ON DELETE RESTRICT
"role_sid_fkey" FOREIGN KEY (role_sid) REFERENCES "user"."role"(role_sid) ON UPDATE CASCADE ON DELETE RESTRICT
Triggers:
section_idx_update BEFORE INSERT OR UPDATE ON knowledgebase.section FOR EACH ROW EXECUTE PROCEDURE tsearch2('section_idx', 'section')
Столбец "пути" использует первичный ключ в качестве маркировки.
Образец текущего содержания той таблицы (относительно первичного ключа и столбца "пути"):
section_sid | path
-------------+-------
53 | 34.53
56 | 56
55 | 29.55
35 | 35
54 | 34.54
37 | 30.37
... | ...
Версия 8.4 PostgreSQL будет приносить Общую функциональность Выражений Таблицы в ядро с WITH
и WITH... RECURSIVE
выражения. При изменении старого кода можно хотеть ожидать, до 8.4 выпущен, поскольку затем Вы не должны будете волноваться ни о каких несовместимостях между Ltree и новым базовым синтаксисом. Если Вы будете работать со старым кодом или не захотите ожидать 8,4, то Вы, вероятно, захотите удостовериться, что Вы пишете код, который легко переводим к новому синтаксису, особенно если Вы изменяете старую схему или разрабатываете новую.
См. также:
Я рекомендую, чтобы любой реализующий иерархические отношения в SQL считал Деревья Joe Celko и Иерархии в SQL для Присяжных острословов.
Пересечение родительских дочерних ссылок произвольной глубины может быть очень неэффективным при использовании просто parent_id. Книга описывает методы, которые делают этот доступ быстро.
Одна стратегия (который я, оказывается, использую) может также быть найдена бесплатно в этом ряду статей: