在mysql存储过程中返回插入记录的id

时间:2014-03-27 12:06:45

标签: mysql

我创建了存储过程以插入数据,我想在同一过程中获取插入记录的id

DELIMITER $$

USE `dbname`$$

DROP PROCEDURE IF EXISTS `sp1`$$

CREATE DEFINER=`root`@`%` PROCEDURE `sp1`(
    Cname VARCHAR(30),
    Camount INT(10)

)
BEGIN
    INSERT INTO user(    Username,    PAmount    )
VALUES(    Cname,    Camount)    ;

    END$$

DELIMITER ;

我试过

SELECT MAX(id) AS pid FROM user;

但这会在下一个查询中导致错误

错误:     Commands out of sync; you can't run this command now

2 个答案:

答案 0 :(得分:0)

如果你的命令不同步;您现在无法在客户端代码中运行此命令,而是以错误的顺序调用客户端函数。

从这里开始:http://dev.mysql.com/doc/refman/5.0/en/commands-out-of-sync.html

答案 1 :(得分:0)

如果将id声明为主键,请使用last_insert_id()函数来解决此问题。有关更多详细信息,请参阅mysql文档中的last_insert_id()

https://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id