gpt4 book ai didi

sql - SQLite 的嵌套集 INSERT 操作

转载 作者:行者123 更新时间:2023-12-03 04:40:30 25 4
gpt4 key购买 nike

我正在尝试为 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 中做到这一点。

提前致谢。

最佳答案

一个想法是将变量 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' ;

关于sql - SQLite 的嵌套集 INSERT 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7614403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com