MySQL多对多:插入表然后进入连接表?

时间:2014-09-26 19:04:42

标签: mysql sql many-to-many junction-table

我有3个表:personsplacesperson_place

每个人都可以拥有许多喜欢的地方,就像每个地方都可以被收藏一样#34;很多人/人。

CREATE TABLE persons
(
ID int NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL
//some fields omitted
);

CREATE TABLE places 
(
ID int NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
address VARCHAR(50) NOT NULL
//some fields omitted
);

CREATE TABLE person_place 
(
ID int NOT NULL AUTO_INCREMENT,
personID int NOT NULL, //references persons.id
placeID int NOT NULL //references places.id
)

让我们说用户喜欢新地点(通过某个网页)。

我应该如何插入新地点然后获取它的ID才能添加person_place行?

谢谢。

2 个答案:

答案 0 :(得分:2)

我会将插入内容包装在一个事务中,然后使用LAST_INSERT_ID()来获取最后一个插入项的id。

START TRANSACTION;
INSERT INTO places(name,address) VALUES('someplace', '...');
SET @last_inserted_id = LAST_INSERT_ID();

INSERT INTO person_place (personID, placeID) VALUES (1, @last_inserted_id)

COMMIT;

答案 1 :(得分:1)

我相信你会使用LAST_INSERT_ID()函数。