您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL与FOREIGN KEYS的多对多关系

MySQL与FOREIGN KEYS的多对多关系

Films_Genres表中明确插入内容之前,您将看不到表格中的任何内容。通过PK和FK进行的参照完整性不是为您填充表。

您的用于在中插入新记录的MysqL代码Films_Genres,如果它是一部与新类型相对应的新电影,可能看起来像

INSERT INTO Films (Title) VALUES ('Title1');
SET @film_id = LAST_INSERT_ID();

INSERT INTO Genres (Name) VALUES ('Genre1');
SET @genre_id = LAST_INSERT_ID();

INSERT INTO Films_Genres (film_id, genre_id) VALUES(@film_id, @genre_id);

PHP端,获取一个新分配的ID,用于自动递增的字段使用$mysqli->insert_id

现在,如果您想制作一部新电影并将其一次分配给多种类型,则可以

INSERT INTO Films (Title) VALUES ('Title2');
SET @film_id = LAST_INSERT_ID();
-- if you get ids of genre from your UI just use them
INSERT INTO Films_Genres (film_id, genre_id) 
SELECT @film_id, id
  FROM Genres
 WHERE id IN (2, 3, 4);

INSERT INTO Films (Title) VALUES ('Title3');
SET @film_id = LAST_INSERT_ID();
-- if you names of genres you can use them too
INSERT INTO Films_Genres (film_id, genre_id) 
SELECT @film_id, id
  FROM Genres
 WHERE Name IN ('Genre2', 'Genre4');

这是 演示

MySQL 2022/1/1 18:50:15 有291人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶