我需要一些好心人的帮助,我正在尝试在锁定表块内创建一个 mysql 查询(或执行一些代码),基于一些结果我需要执行子块 1 或其他,我打算使用到目前为止,我有这个
SELECT @myRight := node.rgt, @myLeft := node.lft, @nivel := node.nivel_pag, @grp := node.grp
FROM `tbl_pages_temp` AS node, `tbl_pages_temp` AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt AND parent.id_pag = 38 AND node.grp = parent.grp AND node.id_pag != parent.id_pag
ORDER BY node.lft DESC LIMIT 1;
#here I want to use CASE or something else so, if @grp > 1 then do updates/insert block1 otherwise do second block
#block 1
UPDATE tbl_pages_temp SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE tbl_pages_temp SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO tbl_pages_temp(menu_pag, lft, rgt, nivel_pag, grp) VALUES('GAME CONSOLES', @myRight + 1, @myRight + 2, @nivel + 1, @grp);
#block 2
UPDATE tbl_pages_temp SET rgt = rgt + 2 WHERE rgt > @myLeft;
UPDATE tbl_pages_temp SET lft = left + 2 WHERE lft > @myLeft;
INSERT INTO tbl_pages_temp(menu_pag, lft, rgt, nivel_pag, grp) VALUES('GAME CONSOLES', @myLeft + 1, @myLeft + 2, @nivel + 1, @grp);
UNLOCK TABLES;
我不能在这个数据库上使用存储过程,我这样做是对的还是有更好的方法?谢谢!!!
我的错,是的,这个想法是根据@grp 值使用一个参数或另一个参数,是的,我假设 cose 可以更紧凑,让我尝试两个答案,看起来都不错