我需要在一个过程中使用两个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 ;
关于可能发生的事情的任何想法?
答案 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);