MySQL“插入...重复键”具有多个唯一键

2024-04-29

我一直在阅读如何使用MySQL在重复键上插入,看看它是否允许我避免选择一行,检查它是否存在,然后插入或更新。然而,当我阅读文档时,有一个地方让我感到困惑。文档是这样说的:

如果指定 ON DUPLICATE KEY UPDATE,并且插入的行会导致 UNIQUE 索引或 PRIMARY KEY 中出现重复值,则会执行旧行的 UPDATE

问题是,我不想知道这是否适用于我的问题,因为我不插入新值的“条件”是存在两列等于某个值的行,但不一定主键是相同的。现在我想象的语法是这样的,但我不知道它是否总是插入而不是替换:

INSERT INTO attendance (event_id, user_id, status) VALUES(some_event_number, some_user_id, some_status) ON DUPLICATE KEY UPDATE status=1

问题是,event_id 和 user_id 不是主键,但如果“出勤”表中的一行已经包含具有这些值的列,我只想更新它。否则我想插入它。这对于 ON DUPLICATE 来说是可能的吗?如果没有,我还可以使用什么其他方法?


引用包括“UNIQUE 索引中的重复值”。因此,您的值不需要是主键:

create unique index attendance_eventid_userid on attendance(event_id, user_id);

据推测,您想要更新现有记录,因为您不希望出现重复项。如果您有时需要重复项,但不是针对此特定插入,那么您将需要另一种方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL“插入...重复键”具有多个唯一键 的相关文章

随机推荐

  • 文件系统和 Memcached 哪个缓存更快/更好?

    我认为我还不清楚 从文件或从 memcached 读取内容更快吗 为什么 Memcached 速度更快 但内存有限 HDD 很大 但 I O 速度比内存慢 你应该把memcached 最热门的东西 and 所有其他人 can go 缓存文件
  • 处理异常后如何从上次尝试的指令继续执行帧?

    我想处理一个NameError通过将所需的缺失变量注入到帧中 然后从上次尝试的指令继续执行来抛出异常 下面的伪代码应该可以说明我的需求 def function return missing var try print function e
  • 循环时,.iter() 与引用 (&) 有何不同?

    在玩 Rust 时 我发现你可以循环Vecs and HashMaps 可能还有其他 通过引用 而不是使用 iter let xs vec 1 2 3 4 5 for x in xs println x x The iter 函数似乎具有相
  • 如何在 Javascript 中的小数点后附加一个额外的“零”

    嘿 我是 JavaScript 新手 使用一个文本框验证十进制数字 示例格式应为 66 00 但是如果用户键入 66 0 并且不在逗号后键入两个零 则在离开文本框后 它应该自动附加到它 这样它就是正确的格式 我怎样才能得到这个 我怎样才能追
  • 为什么当设置为 TLS 选择器时,ES 和 DS 在 64 位内核上最终会归零?

    下面的 32 位程序调用set thread area 2 http linux die net man 2 set thread area在 GDT 中创建一个条目 该条目旨在用于 TLS 通常将结果选择器放入FS or GS并成功使用
  • 从 PHP 启动交互式 SSH bash 会话

    我正在使用 PHP 编写常见服务器管理任务的快捷方式 我正在使用deployer org 但这应该不重要 我想添加一个任务 用于在通过 SSH 连接到服务器后启动交互式 bash 提示符 例如 您将运行 dep ssh 其中 dep 是一个
  • 在 phpunit 中 __construct 与 setup 之间有什么区别?

    我很想知道在测试类 construct 中创建对象是一种很好的做法 或者我们应该始终使用 setup teardown 方法 或 setUpBeforeClass tearDown AfterClass 方法 我知道每个测试都会调用 set
  • 在 Web API 2 中返回字符串

    听起来很简单 我还没有找到任何关于这方面的文档 也许我的措辞是错误的 所以如果是这样 一些关于这方面的好的文档将不胜感激 我只想返回一个字符串或字符串类型的模型 return string here 我每次都会收到此错误 Severity
  • 可基于多列格式化

    我正在使用该包formattable生成格式化表格 我发现了一个不错的资源在 R 中设置表格格式 http www r bloggers com formatting table output in r 但这里的箭头格式示例仅基于特定列 我
  • Windows 从属设备上的 Jenkins Git SSH 密钥

    目前 我们在 Windows 上有一个 Jenkins 主服务器 一个 ubuntu 从服务器和一个 Windows 从服务器 我正在尝试在 Windows 从机上设置 git msysgit 已安装 并且我将该目录包含在系统路径变量中 以
  • C++ 中的全局对象

    在下面的C 代码中 s分配在哪里 它使用堆 数据 bss 还是某种组合 我使用的是 Linux x86 平台 以防产生影响 有没有办法让 g 编译器向我显示布局 include
  • 为什么使用枚举而不是静态布尔?

    为什么在模板元编程中使用 enum 而不是 static const bool 被认为是更好的做法 我在 Alexandrescu 的书中读到过这一点 但找不到它 但我真的很想知道它 关键原因是 static bool 毕竟是一个变量 而
  • 通过与 cytoscape.js 中特定节点的连接来过滤图表

    Cytoscape 的新手 我有一张图 其中包含主导主网络和一些与我要删除的主网络未连接的较小网络 浏览文档我看不到明显的解决方案 我猜测可能需要一种自定义方法来循环所有节点 检查它们与主集群中最中心节点的图形距离 如果该距离未定义 则删除
  • 在 MySQL 中向 BIGINT 列添加索引有帮助吗?

    我有一个包含数百万个条目的表 以及一个包含BIGINT 20 每行的唯一值 它们不是主键 但在某些操作过程中 有数千个SELECTs 在中使用此列WHERE条款 问 向该列添加索引是否有帮助当条目数量增长到数百万时 我知道它适用于文本值 但
  • 如何解读这些时间戳?

    我正在尝试解析一些 xml 文件中写入的时间戳 大多数时间时间戳是这样的2009 07 22 07 00但有时我发现它们就像2009 07 22Z or 2009 07 22z 请帮助我如何解释这些 Z 以及如何解析它们 我认为这些 z 或
  • 使用 Liquid 标记获取 Jekyll 中的今天日期

    我认为这 应该 很容易 但我无法使用 Liquid 标记在 Jekyll 页面中显示今天的日期 根据文档 https github com Shopify liquid wiki Liquid for Designers 我应该能够这样做来
  • PCRE 库版本太旧

    Bug Genie 3 需要 PCRE 库 8 0 或更高版本 你有 版本 7 8 2008 09 05 将您的系统更新到最新版本 你常用的来源 在我查看问题并尝试通过以下步骤更新我的 PCRE 库后 wget the latest sou
  • IE7 中列表项之间的 CSS 间隙

    我无法消除 IE7 中列表项之间的间隙 HTML ul li div row 1 1 div div row 1 2 div li ul
  • Silverlight:创建圆形按钮模板

    我决定尝试制作一个圆形按钮 因此使用表达式混合 我在 xaml 上放置了一个按钮控件 然后 我通过选择 编辑控制部件 模板 gt 编辑副本 来创建一个模板 我正在尝试设计它 使按钮的左侧和右侧始终是完美的半圆 这样无论按钮长得多高或多宽 角
  • MySQL“插入...重复键”具有多个唯一键

    我一直在阅读如何使用MySQL在重复键上插入 看看它是否允许我避免选择一行 检查它是否存在 然后插入或更新 然而 当我阅读文档时 有一个地方让我感到困惑 文档是这样说的 如果指定 ON DUPLICATE KEY UPDATE 并且插入的行