0

我需要在单个过程中使用两个插入语句来更新主表和详细表,因此我尝试使用 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 ;

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

4

1 回答 1

0

问题出在这条线上

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

. 您正尝试LAST_INSERT_ID()在第二个 select 语句中直接调用存储过程。如果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);
于 2013-08-14T13:10:07.953 回答