小编典典

(mysql,php)如何在插入数据之前获取auto_increment字段值?

mysql

我正在将图像文件上传到存储服务器。上传之前,我应该编写文件名,其中包含AUTOINCREMENT VALUE(例如12345_filename.jpg)。

在插入数据库之前如何获得自动增量值?

我只看到一种解决方案

  1. 插入空行
  2. 得到它的自动增量值
  3. 删除该行
  4. 使用第1页中的自动增量值将行插入实际数据

还有其他解决方案吗?

谢谢


阅读 326

收藏
2020-05-17

共1个答案

小编典典

完成插入后,自动增量值由数据库本身生成;这意味着您无法在执行实际的插入查询之前获得它。

您提出的解决方案不是经常使用的解决方案,而是:

  • 插入一些半空数据
  • 获取已生成的自动增量值
  • 使用该自动增量值进行计算
  • 更新该行以放置新的/完整的数据-使用查询where子句中前面生成的自动增量update,以标识要更新的行。

当然,为了安全起见,所有这些操作都必须在事务中进行 (以确保“全有或全无”行为)

作为伪代码:

begin transaction
insert into your table (half empty values);
$id = get last autoincrement id
do calculations
update set data = full data where id = $id
commit transaction
2020-05-17