在记录保存到mysql问题之前​​获取id

时间:2013-04-04 12:21:58

标签: mysql max

我想保存这些属性的属性和图像。在填写属性表单时,用户选择要上载的图像。

有两个表:属性和图像;在保存图像的同时,我也传递了propertyid

运行MAX(id)的查询给了我0.我输入它的方法是将它递增1并将其保存在images表中作为prop_id

select IFNULL(max(id),0) as id from property

我删除了属性表中的所有数据,现在当我保存数据时,我在images表中看到prop_id=1,而属性表中的propertyid实际上是11(因为10条记录是删除)......这显然是一个问题。

在这种情况下我该怎么做?

1 个答案:

答案 0 :(得分:0)

不要使用MAX(id)或类似的“魔术”,这里遇到并发问题(即2个用户同时使用同一页面)。插入后使用MySQL的LAST_INSERT_ID()或编程语言中的等效函数(例如PHP中的mysql_insert_id()),然后使用ID将属性链接到图像。

  当我保存数据时,我现在删除了属性表中的所有数据,我明白了   图像表中的prop_id = 1和不动产id = 11(之前为10)   记录已删除)...这显然是一个问题。

这不是问题。您可以预期单独表中的ID最终会不同步;不要打它。只需从一张表转到另一张表,例如

CREATE TABLE property (
  int id primary key auto_increment,

  ... more columns ...
)

CREATE TABLE image (
  int id primary key auto_increment,
  int property_id REFERENCES property(id),

  ... more columns ...
)

或者相反,取决于您的使用情况。