【发布时间】:2020-04-13 02:49:15
【问题描述】:
创建一个书签系统。用户可以为要关注的玩家添加书签或取消添加书签。从表面上看,我认为重复的密钥更新可以与 playerID 一起使用。但是,一个玩家可能有几个用户为他添加书签。
所以它必须将 playerID 与 userID 配对。如果该对不存在,则插入。如果该对确实存在,请更新。
以下是我为重复密钥更新所做的。我将如何检查一对两列?连接?
$query = "INSERT INTO a_player_bookmark (playerID,bookmark,userID,username)
VALUES ('". $pid ."','". $bookmark ."','". $userID ."','". $user ."')
ON DUPLICATE KEY
UPDATE bookmark = '". $bookmark ."'
";
【问题讨论】:
-
可能最好保留基础数据表的两个独立(和索引)表视图,这样您就可以轻松查看您关注的人和关注您的人。也就是说,您需要在
follower->followed的数据表中建立关联,这是严格单向的,因此您可以将两列的复合唯一键放在一起。然后你就可以使用 upsert 了。 -
我没有完全理解你所说的。如果存在呢?
-
insert ... on duplicate key update是一个 upsert(更新插入)。您是在问如果该值已经在表中怎么办?那将是唯一密钥的好处。此外,即使您刚开始,我也建议您使用 PDO 并了解准备好的语句,出于安全原因,将您的值连接到查询中也是一个很大的禁忌。 -
playerID 和 userID 是其他数据表中的唯一键,我有这个书签表,我在其中关联关注者并关注。我需要查询帮助来检查关系是否存在以确定我是否需要插入或更新。
标签: mysql insert-update on-duplicate-key