0

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

谢谢你。

4

2 回答 2

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;
于 2014-09-26T19:19:43.557 回答
1

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

于 2014-09-26T19:11:24.273 回答