我的目标是在MySQL数据库中建立多对多的关系,我已经到了另一个桥来构建。
当前表:
用户(id,name)
标签(id,name)
用户标签(用户id,标签id)
目标是:
我希望能够获取一个标记,即:#fb
并将其插入到我的Tags
数据库中,该数据库对cc有唯一的约束,如果标签存在,我想返回它的name
我想将id
和当前用户的tag.id
插入到user.id
中。我对User_Tags
表没有任何唯一的约束,因为我希望能够跟踪用户最常用的标记,并按使用频率排列在列表中。
我目前正在使用准备好的语句用PHP开发这个项目。
此外,性能目前不是一个问题,因为我的用户数仍然是相当小的,但它正在稳步增长,可能是一个问题在未来。
最佳答案
您可以使用MySQL的ON DUPLICATE KEY UPDATE和LAST_INSERT_ID(expr)来获取标记id,而不管它是插入的还是已经存在的,例如。
INSERT INTO
Tags
(name)
VALUES
(:name)
ON DUPLICATE KEY UPDATE
id = LAST_INSERT_ID(id)
和
INSERT INTO
User_Tags
(user_id, tag_id)
VALUES
(:userid, LAST_INSERT_ID())