gpt4 book ai didi

mysql - 在mysql中,如何删除重复的唯一键,并仍然在同一命令中插入新行?

转载 作者:行者123 更新时间:2023-11-29 12:37:18 26 4
gpt4 key购买 nike

我有一个用户数据库表,它有一列gcm_id用于向android推送通知。我将此列设置为唯一,因为用户可能会在同一设备上注销并登录,因此他们将具有相同的 gcm_id。

我希望行为如下:

当请求更新用户的 gcm_id 列时,如果特定的 gcm_id 已存在,请将其更改为 null 并继续在请求行上照常更新。

我举个例子。假设我的表中有以下条目:

index | user_name | gcm_id
------+-----------+-------
1 | Tom | 123
2 | John | NULL

如果 Tom 注销并以 John 身份登录,客户端将希望将 John 的 gcm_id 更新为 123。但 gcm_id 列应该是唯一的。因此,在这种情况下,我希望 mysql 服务器将 Tom 的 gcm_id 更改为 NULL 并将 John 的 gcm_id 设置为 123.

到目前为止,我所看到的与ON DUPLICATE语法相关的只是让mysql更新现有行而不是创建一个新的一个。我想两者都做。

这可以用单个 mysql 命令实现吗?

最佳答案

你可以这样做,请参阅 this question about upsert (虽然不知道是否适用于 MySQL)。

但我仍然会为设备 ID 使用单独的表,其中仅包含 gcm_iduser_id 字段。

根据您当前的设计,您无法将同一用户与两个不同的设备关联。使用额外的表,您可以通过使 user_id 不唯一来解决这个问题。仅此一点就足以让改变变得值得。

关于mysql - 在mysql中,如何删除重复的唯一键,并仍然在同一命令中插入新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26574252/

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