我想保存这些属性的属性和图像。在填写属性表单时,用户选择要上载的图像。
有两个表:属性和图像;在保存图像的同时,我也传递了propertyid
。
运行MAX(id)的查询给了我0.我输入它的方法是将它递增1并将其保存在images表中作为prop_id
select IFNULL(max(id),0) as id from property
我删除了属性表中的所有数据,现在当我保存数据时,我在images表中看到prop_id=1
,而属性表中的propertyid
实际上是11(因为10条记录是删除)......这显然是一个问题。
在这种情况下我该怎么做?
答案 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 ...
)
或者相反,取决于您的使用情况。