1

我有两张桌子

CREATE TABLE IF NOT EXISTS `property` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
 `name` longtext NOT NULL
 PRIMARY KEY (`id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=545 ;

其他表是

CREATE TABLE IF NOT EXISTS `property_images` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`property_id` bigint(44) NOT NULL,
`image` varchar(555) NOT NULL
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3071 ;

在我的网站中,用户必须保存/上传新属性。他们键入属性详细信息并通过 uploadify 上传图像。之后,他们单击保存按钮以保存属性详细信息。当他们通过uploadify上传图像时,在服务器端,我获得了属性的最大ID并将其加1(递增)并保存该属性ID的图像。

简单是在属性详细信息之前保存的图像。

问题是当一个用户上传图像时,同时如果其他用户保存他的属性,这些图像分配给它,所以大多数时候不同的图像分配给不同的属性。

我可以在这里做些什么来避免这个问题?

4

1 回答 1

0

而不是使用MAX(id) + 1你应该使用LAST_INSERT_ID()功能。

INSERT INTO property (name) VALUES ('Property1');

INSERT INTO property_images(property_id, image) VALUES 
(LAST_INSERT_ID(), '/path/to/your/image1.png'),
(LAST_INSERT_ID(), '/path/to/your/image2.png'),
(LAST_INSERT_ID(), '/path/to/your/image3.png');

这是SQLFiddle演示

于 2013-09-05T09:11:53.537 回答