我有两张桌子
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.A之后,他们点击保存按钮保存属性详细信息。 当他们通过uploadify上传图像时,在服务器端,我获得属性的最大ID并添加1(增加它)并保存该属性的图像。
简单是在属性详细信息之前保存的图像。
问题是当一个用户上传图像时,同时如果其他用户保存了他的属性,则会将这些图像分配给它,因此大多数时候将不同的图像分配给不同的属性。
我可以在这做什么以避免这个问题?
答案 0 :(得分:0)
您应该使用LAST_INSERT_ID()
函数,而不是MAX(id) + 1
。
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 演示