繁体   English   中英

LAST_INSERT_ID在UPDATE上不起作用

[英]LAST_INSERT_ID not working on UPDATE

如果我使用以下SQL:

UPDATE formulare SET EV_id=59, EV_status=5 WHERE EV_id=57 AND ID_uziv=12;SELECT LAST_INSERT_ID();

我将得到0作为最后的插入ID。 我正在使用php mysqli_insert_id ,这里说的是:

The mysqli_insert_id() function returns the ID generated by a query 
on a table with a column having the AUTO_INCREMENT attribute. 
If the last query wasn't an INSERT or UPDATE statement 
or if the modified table does not have a column with the AUTO_INCREMENT attribute, 
this function will return zero. 

我的表格formualre具有auto increment列,所以我不知道问题是

如果创建新的自动增量值,则LAST_INSERT_ID()将不起作用。

解决方案是这样的:

UPDATE formulare SET EV_id=LAST_INSERT_ID(59), EV_status=5 WHERE EV_id=57 AND ID_uziv=12;SELECT LAST_INSERT_ID();

注意:我猜想EV_id是auto_increment主键。

否则,您应该执行以下查询:

UPDATE formulare SET key_col = LAST_INSERT_ID(key_col), EV_id=59, EV_status=5 WHERE EV_id=57 AND ID_uziv=12;SELECT LAST_INSERT_ID();

文档中

成功执行前一个查询为AUTO_INCREMENT列生成的ID; 如果前一个查询未生成AUTO_INCREMENT值 ,则为0;如果未建立MySQL连接,则为FALSE。

由于您的更新未创建新记录,因此未生成任何AUTO_INCREMENT值。

UPDATE查询更新现有记录,它不返回任何新ID。

mysqli_insert_id retrieves the ID generated for an AUTO_INCREMENT column by the        
previous query (usually INSERT).

没有INSERT查询,这就是原因,执行UPDATE查询后,您将不会获得任何ID。

有关更多信息,请参考mysql_insert_id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM