分隔符不适用于MySQL 5.1

时间:2013-08-03 17:04:16

标签: mysql stored-procedures phpmyadmin delimiter

我需要在一个过程中使用两个insert语句来更新master和detail表,所以我尝试使用delimiter关键字来实现它。我正在使用phpMyAdmin 3.5.8,客户端libmysql - 5.0.96和mysql 5.1.70。我尝试了各种语法,但似乎都没有。这是我的问题:

DELIMITER //
CREATE PROCEDURE `agregarPrincipio` (IN ID_PRODUCTO INT UNSIGNED, IN DESCR VARCHAR(100))
BEGIN
START TRANSACTION;
INSERT INTO `TM_PRINCIPIO_ACTIVO` (`DESCRIPCION`) VALUES(DESCR);
INSERT INTO TD_PRINCIPIO_ACTIVO(`ID_TD_PRINCIPIO_ACTIVO`,`ID_TM_PRINCIPIO_ACTIVO`) VALUES(ID_PRODUCTO,LAST_INSERT_ID());
COMMIT; 
END
//
DELIMITER ;

关于可能发生的事情的任何想法?

1 个答案:

答案 0 :(得分:0)

问题出在

INSERT INTO TD_PRINCIPIO_ACTIVO(`ID_TD_PRINCIPIO_ACTIVO`,`ID_TM_PRINCIPIO_ACTIVO`) VALUES(ID_PRODUCTO,LAST_INSERT_ID());

。您正试图在第二个select语句中直接调用存储过程LAST_INSERT_ID()。如果LAST_INSERT_ID()返回单个值,请尝试将其保存在变量中。然后使用该变量

DECLARE last_id int default 0;
SET last_id= SELECT LAST_INSERT_ID(); #if it is a function other wise use exec
INSERT INTO TD_PRINCIPIO_ACTIVO(`ID_TD_PRINCIPIO_ACTIVO`,`ID_TM_PRINCIPIO_ACTIVO`) VALUES(ID_PRODUCTO,last_id);