善良な魂からの支援が必要です。サブブロック1またはその他を実行するために必要な結果に基づいて、ロックテーブルブロック内でmysqlクエリを作成(またはコードを実行)しようとしています。使用する予定でしたこれまでのところ、私はこれを持っています
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;
この DB ではストア プロシージャを使用できません。これを正しく行っていますか、それとももっと良い方法がありますか?? ありがとう!!!
私の悪い、はい、アイデアは @grp 値に応じていずれかのパラメーターを使用することです。はい、cose がよりコンパクトになると仮定しています。両方の答えを試してみましょう。両方とも良さそうです。