SQLite的嵌套set INSERT操作

时间:2011-09-30 18:16:05

标签: sql sqlite tree nested-sets

我正在尝试为sqlite数据库实现嵌套集模型。 到目前为止,我已经实现了获取叶节点,寻找下属等。 我使用this教程作为参考 但是,我被困在插入一个新节点。 这是网站上的代码

LOCK TABLE nested_category WRITE;

SELECT @myRight := rgt FROM nested_category
WHERE name = 'TELEVISIONS';

UPDATE nested_category SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE nested_category SET lft = lft + 2 WHERE lft > @myRight;

INSERT INTO nested_category(name, lft, rgt) VALUES('GAME CONSOLES', @myRight + 1, @myRight + 2);

UNLOCK TABLES;

我知道sqlite中没有锁表..我的问题是我需要将第一个查询的结果传递给下一个。这是通过@使用用户创建的变量完成的。我无法弄清楚如何在SQLite中做到这一点。

提前致谢。

1 个答案:

答案 0 :(得分:3)

ideea是用生成它的查询替换变量myRight。 那就是将代码移到纯SQL中。

UPDATE nested_category SET rgt = rgt + 2 
WHERE rgt > (SELECT rgt 
             FROM nested_category
             WHERE name = 'TELEVISIONS');

UPDATE nested_category SET lft = lft + 2 
WHERE lft > (SELECT rgt 
             FROM nested_category
             WHERE name = 'TELEVISIONS');

INSERT INTO nested_category(name, lft, rgt)
SELECT 'GAME CONSOLES', rgt + 1, rgt + 2 
FROM nested_category
WHERE name = 'TELEVISIONS' ;