我在sql表中有一个树结构,如下所示:
CREATE TABLE containers (
container_id serial NOT NULL PRIMARY KEY,
parent integer REFERENCES containers (container_id))
现在我想定义具有相同父节点的节点之间的排序
我曾考虑将node_index
列添加到ORDER BY
,但这似乎不是最理想的,因为这涉及在修改结构时修改许多节点的索引。
这可能包括添加,删除,重新排序或将节点从某个子树移动到另一个子树。
有序序列是否有sql数据类型,或者是一种有效的模拟方法?不需要完全标准的sql,我只需要mssql
的解决方案,并希望postgresql
EDIT
为清楚起见,排序是任意的。实际上,用户将能够在GUI中拖放树节点
答案 0 :(得分:2)
假设您不想按现有值排序,我担心您需要另一列来存储某种索引列。 sql本身没有有序序列的概念。
答案 1 :(得分:1)
使用node_index的想法,您可以使用一些简单的SQL轻松更新值(您可以在UPDATE语句中递增/递减值)。为了做得更好,我认为我们需要了解更多关于你存储内容以及如何修改它的具体信息。