gpt4 book ai didi

Mysql INSERT ...重复键更新,如果值不同,否则删除

转载 作者:行者123 更新时间:2023-11-29 11:09:21 29 4
gpt4 key购买 nike

我有一组按钮,一次只能选择其中一个,并且可以关闭它们,这意味着如果用户再次选择选定的按钮,则应取消选择该按钮。
假设我的表格有 buttons_iduser_idvalue 列、buttons_iduser_id 是主键(连接在一起)。
所以我想

  • 如果 buttons_iduser_id 组合不存在,则将所选插入表中(插入)
  • 如果 buttons_iduser_id 组合存在且值不同(重复键更新),则更新记录
  • 如果 buttons_iduser_id 组合存在且值相同,则删除记录(删除?)

我怎样才能做到这一点?这是一个单一的查询?我可以在重复 key 更新中使用case吗?

最佳答案

您将需要使用事务(要求您的表使用事务存储引擎,例如 InnoDB):

  1. 开始交易。这通常最好通过适当调用您正在使用的任何 API 来完成,但如果您绝对必须在 SQL 中执行此操作,那么您可以这样做:

    START TRANSACTION
  2. 发出 locking read发现当前值:

    SELECT `value` FROM `table` WHERE buttons_id = ? AND user_id = ? FOR UPDATE
  3. 根据上面收到的结果,在客户端应用程序中执行业务逻辑,即如果没有结果,则发出 INSERT;如果 value 不同,则发出 UPDATE;如果 value 匹配,则发出 DELETE .

  4. 提交事务。同样,这通常最好通过 API 调用来完成,但如果您在 SQL 中执行此操作:

    COMMIT

关于Mysql INSERT ...重复键更新,如果值不同,否则删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40883149/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com