我有3个表:personsplacesperson_place

每个人可以有许多喜欢的地方,就像每个人可以被许多人/人“喜爱”一样。

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行?

谢谢。

最佳答案

我会将插入内容包装在事务中,然后使用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;

关于mysql - MySQL多对多:先插入表然后再插入联结表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26066618/

10-16 06:41