MySQL-选择或插入

标签 mysql node.js

我有来自许多外部源的用户,我尝试将它们映射到内部 userId,所以我的表是:

userId, externalSourceId, externalUserId

在我的代码中,我正在获取 externalSourceIdexternalUserId 并希望从数据库获取 userId(如果存在),否则,创建一个并返回新创建的值。我需要这个操作是原子的,因为多个进程可能会尝试同时做同样的事情,所以我希望只有第一次才能创建一个 userId

在伪代码中,它看起来像这样:

  1. u = 使用 (externalSourceId, externalUserId) 查找用户
  2. 如果没有你:
    2.1. u = 使用 (externalSourceId, externalUserId) 和随机 userId 创建新用户
  3. 返回您

最佳答案

INSERT INTO `users`
(`externalSourceId`, externalUserId)
VALUES( 10, 100)
ON DUPLICATE KEY
UPDATE userId=userId

您还可以使用插入忽略。您可以阅读更多关于 DUPLICATE KEY versus INSERT IGNORE

关于MySQL-选择或插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50172584/

相关文章:

mysql - 使用参数执行批处理文件

php - 使用准备好的 MySQLi 语句生成关联数组

javascript - 单线程Node.js如何同时处理请求?

node.js - Mongodb 和 Node.js 连接错误

node.js - 用户 : is not authorized to perform: cloudformation:DescribeStacks

mysql - 查找 AM Times 并更新?

java - Stackoverflow 和 Hibernate 使用 sql IN (id, id, id, id..id)

mysql - Rails/MySQL : How to query for a record by its full 'created_at' timestamp?

javascript - 在 NodeJS 中从服务器下载文件

javascript - 过滤掉对象成员的好习惯用法(javascript)