29

最後に挿入されたIDを取得するには?

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insertzonemsg`

   (IN User_Id INT(10),
    IN zid INT(10),
    IN update_titles VARCHAR(50),
    IN textarea1s TEXT,
    IN filupload1s TEXT,
    IN audio1s VARCHAR(100),
    OUT out_id INT(10))
        BEGIN
        INSERT INTO zone_message_master
        **(user_id,ZoneID,update_title,textarea1,filupload1,
        audio1,LastUpdate)**
        VALUE
        **(User_Id,zid,update_titles,textarea1s,
        filupload1s,audio1s,NOW());**

SELECT **id** as **out_id**
FROM **zone_message_master** LAST_INSERT_ID();
END$$

out_idテーブルから最後に挿入された ID を返す必要がありzone_message_masterますか?

4

2 に答える 2

47

SET ステートメントを使用する必要があります。例えば ​​-

テーブル:

CREATE TABLE table1(
  id INT(11) PRIMARY KEY AUTO_INCREMENT,
  column1 VARCHAR(10),
  column2 VARCHAR(10)
);

プロシージャの本体:

BEGIN
  INSERT INTO table1(column1, column2) VALUES ('value1', 'value2');
  SET out_param = LAST_INSERT_ID();
END

ID フィールドは INSERT ステートメントで指定されていないことに注意してください。この値は自動的に挿入されます。もちろん、この ID フィールドには AUTO_INCREMENT オプションが必要です。

于 2012-10-31T06:59:49.873 に答える