Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL使用存储过程中最后插入的id_Mysql_Sql_Phpmyadmin - Fatal编程技术网

MySQL使用存储过程中最后插入的id

MySQL使用存储过程中最后插入的id,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,通过phpmyadmin的接口,我创建了一个存储过程,如下所示: DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_checkin_create`(IN `userid` INT(10), IN `organizationid` INT(10), IN `checkindate` DATETIME(6), IN `checkoutdate` DATETIME(6), IN `checkinid` INT(10)) NO SQ

通过phpmyadmin的接口,我创建了一个存储过程,如下所示:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_checkin_create`(IN `userid` INT(10), IN `organizationid` INT(10), IN `checkindate` DATETIME(6), IN `checkoutdate` DATETIME(6), IN `checkinid` INT(10))
NO SQL
Insert Into checkin Values(CheckInID, UserID, OrganizationID, CheckInDate, CheckOutDate) ON DUPLICATE 
KEY UPDATE CheckInID=CheckInID, UserID=userid, OrganizationID=organizationid, checkindate=checkindate, CheckOutDate=checkoutdate$$
DELIMITER ;
如何从此过程返回
LAST\u INSERT\u ID()
?我知道以下用例:

SELECT LAST_INSERTED_ID();
但是,我无法找到一种方法,在过程中合并此查询,而不会出现不明确的错误

任何帮助都将不胜感激

编辑1

Create table语句:

DROP TABLE IF EXISTS `checkin`;
CREATE TABLE IF NOT EXISTS `checkin` (
`CheckInID` int(11) NOT NULL AUTO_INCREMENT,
`UserID` int(11) NOT NULL,
`OrganizationID` int(11) DEFAULT NULL,
`CheckInDate` datetime DEFAULT NULL,
`CheckOutDate` datetime(6) NOT NULL,
PRIMARY KEY (`CheckInID`),
UNIQUE KEY `CheckInID` (`CheckInID`)
) ENGINE=MyISAM AUTO_INCREMENT=4407 DEFAULT CHARSET=latin1;
正式:

分隔符$$
创造
DEFINER=`root`@`localhost`
过程'sp_checkin_create'(在'userid`INT(10)中),
在'organizationid`INT(10)中,
在“checkindate”日期时间(6)中,
在“签出日期”日期时间(6)中,
在“checkinid”INT(10)中,
OUT inserted_id BIGINT)
无SQL
开始
插入签入
值(CheckInID、UserID、OrganizationID、CheckInDate、CheckOutDate)
关于重复密钥更新
UserID=UserID,OrganizationID=OrganizationID,checkindate=checkindate,CheckOutDate=CheckOutDate;
在插入的\u ID中选择最后一个\u插入\u ID();
结束;
$$
定界符;

调用sp_checkin_create(123456,'2021-01-01','2021-01-01',789,@last_inserted_id);
选择@last_inserted_id;


实际上:
LAST\u INSERT\u ID()
仅在自动递增生成新值时使用,因此在这两种情况下都没有意义(使用AI显式赋值插入新行和触发ODKU)。

显示签入
表的完整创建表脚本。什么约束可能导致ODKU操作?@Akina check edit1)如果PK约束存在,则同一表达式的唯一键多余。您将有两个类似的索引。删除
唯一键`CheckInID`(`CheckInID`)
行。2) 如果ODKU是由于现有传输的
CheckInID
值而触发的,则其赋值是多余的。