0

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

有两个表:property 和 images;在保存图像时,我propertyid也通过了。

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

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

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

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

4

1 回答 1

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 ...
)

或者反过来,取决于你的使用。

于 2013-04-04T12:44:56.237 回答