0

マスター テーブルとディテール テーブルを更新するには、1 つのプロシージャで 2 つの挿入ステートメントを使用する必要があるため、これを機能させるために 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()2 番目の 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 に答える