首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从MySQL中的存储过程中提取上次插入的ID

从MySQL中的存储过程中提取上次插入的ID
EN

Stack Overflow用户
提问于 2012-10-31 13:39:54
回答 2查看 62.7K关注 0票数 29

如何获取最后插入的id?

代码语言:javascript
复制
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$$

我需要从表zone_message_master中将最后插入的ID作为out_id返回

EN

回答 2

Stack Overflow用户

发布于 2012-10-31 14:59:50

您需要使用SET语句。例如:

表:

代码语言:javascript
复制
CREATE TABLE table1(
  id INT(11) PRIMARY KEY AUTO_INCREMENT,
  column1 VARCHAR(10),
  column2 VARCHAR(10)
);

过程的主体:

代码语言:javascript
复制
BEGIN
  INSERT INTO table1(column1, column2) VALUES ('value1', 'value2');
  SET out_param = LAST_INSERT_ID();
END

请注意,该ID字段未在INSERT语句中指定。此值将自动插入;当然,此ID字段必须具有AUTO_INCREMENT选项。

票数 46
EN

Stack Overflow用户

发布于 2016-11-26 20:20:17

你可以通过下面的代码获得上次插入的ID:

只需创建一个存储过程:

代码语言:javascript
复制
CREATE DEFINER=`root`@`localhost` PROCEDURE `add_enquiry`(
IN EnquiryNo varchar(40),
IN OpeningDate date,
IN ClosingDate date,
IN  CreatedOn date,
OUT LID int(11)
)

BEGIN

INSERT into `enquiries` SET `enquiry_no`=EnquiryNo ,`opening_date`=OpeningDate ,`closing_date`=ClosingDate,`created_on` =CreatedOn;

SET LID = LAST_INSERT_ID();
END    

在PHP上调用:

代码语言:javascript
复制
$rs = $dbh->query('CALL add_enquiry("ENQ" ,"2016-08-19","2016-08-18", "2016-11-23",@LID)'); 

$rs2 = $dbh->query("SELECT @LID as id");
$row = $rs2->fetchObject();
echo $row->id;
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13151861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档