0

Mysql にストアド プロシージャがあります

DELIMITER $$
CREATE PROCEDURE REG_LOCATE(IN MDN VARCHAR(50), IN CALLID VARCHAR(50))
BEGIN
DECLARE cmd CHAR(255);
DECLARE result int(10);
DECLARE transactionId VARCHAR(255);
INSERT INTO  transactions(id, device_number, call_id, creation_time, method_name) VALUES( UUID(), MDN, CALLID, now(), 'MDN_REG_LOCATE');
SELECT id FROM transactions ORDER BY creation_time desc LIMIT 1 INTO transactionId;
END;
$$
DELIMITER ;

ID が mysql の UUID() によって挿入されているトランザクション テーブルに行を挿入しました。同じプロシージャ内のトランザクション テーブルから最後に挿入された ID を取得するにはどうすればよいですか。

SELECT id FROM transactions ORDER BY creation_time desc LIMIT 1 INTO transactionId;

しかし、それは私に最後に挿入されたIDを与えていません.これで私を助けてください. 前もって感謝します

4

1 に答える 1

0

最初に呼び出しの結果を変数に代入してから、ステートメントUUID()でその変数の値を使用します。INSERT

DELIMITER $$

CREATE PROCEDURE REG_LOCATE(IN MDN VARCHAR(50), IN CALLID VARCHAR(50))
BEGIN
  DECLARE cmd CHAR(255);
  DECLARE result int(10);
  DECLARE transactionId VARCHAR(255);

  SET transactionId := UUID();
  INSERT INTO transactions
    (id, device_number, call_id, creation_time, method_name)
  VALUES
    (transactionId, MDN, CALLID, now(), 'MDN_REG_LOCATE');
END$$

DELIMITER ;
于 2012-10-16T08:02:58.817 に答える