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

最佳答案

您可以使用MySQL的ON DUPLICATE KEY UPDATELAST_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())

10-07 12:31
查看更多