在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');
这是 演示