MySQL过程语言
SQL查询:文档MySQL过程语言,mysql,Mysql,SQL查询:文档 CREATE PROCEDURE tree_add_root() BEGIN START TRANSACTION; $max = SELECT MAX(`rht`) FROM trees; INSERT INTO trees(`tree_id`, `name`, `label`, `description`, `lft`, `rht`, `lvl`) VALUES(1, 'Index', 'Index', '', 1,$max+1 , 0); COMMENT; END; My
CREATE PROCEDURE tree_add_root()
BEGIN
START TRANSACTION;
$max = SELECT MAX(`rht`) FROM trees;
INSERT INTO trees(`tree_id`, `name`, `label`, `description`, `lft`, `rht`, `lvl`) VALUES(1, 'Index', 'Index', '', 1,$max+1 , 0);
COMMENT;
END;
MySQL说:文档
CREATE PROCEDURE tree_add_root()
BEGIN
START TRANSACTION;
$max = SELECT MAX(`rht`) FROM trees;
INSERT INTO trees(`tree_id`, `name`, `label`, `description`, `lft`, `rht`, `lvl`) VALUES(1, 'Index', 'Index', '', 1,$max+1 , 0);
COMMENT;
END;
1064-您的SQL语法有错误;检查手册
对应于您的MySQL服务器版本,以便使用正确的语法
靠近“=从树中选择MAXrht;插入到treestree_id中,
第4行的名称、标签、`
我怎样才能解决这个问题
Use This
CREATE PROCEDURE tree_add_root()
BEGIN
DECLARE v_max int(11);
START TRANSACTION;
SELECT MAX(`rht`) into v_max FROM trees;
INSERT INTO trees(`tree_id`, `name`, `label`, `description`, `lft`, `rht`, `lvl`) VALUES(1, 'Index', 'Index', '', 1,v_max+1 , 0);
COMMIT;
END;
在MySQL过程中使用任何变量之前,需要先使用上面查询中的declare关键字进行声明,然后启动主体开始。在此处使用v_max而不是$max
也可以使用COMMIT关键字而不是comment。在我对您的问题所做的评论之后 …你可以试试这个,伙计:
DROP PROCEDURE IF EXISTS `tree_add_root`;
DELIMITER //CREATE PROCEDURE `tree_add_root` ()
BEGIN
START TRANSACTION;
SET @max = (SELECT MAX(`rht`) FROM trees);
INSERT INTO trees (`tree_id`, `name`, `label`, `description`, `lft`, `rht`, `lvl`)
VALUES (1, 'Index', 'Index', '', 1, (@max + 1), 0);
COMMIT;
END//
DELIMITER ;
因此,无论何时调用函数,都需要执行以下操作:
CALL tree_add_root();
我希望这个能帮助你,干杯 $max是一个变量,我在其中存储了rhtI的最大值,我希望从树中获取maxrht,并希望将该值放入insert查询中。我该怎么做呢?用@max代替$maxafter试试@max我遇到了这个问题MySQL说:文档1064-你的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在“@max=SELECT MAXrht FROM trees”附近使用的正确语法;在第5行的treestree_id中插入名称“labe”;你是说承诺;朋友