如果存在则更新记录,否则插入

时间:2013-02-08 00:38:19

标签: mysql

我需要更新记录(如果存在),否则插入它。我知道这已被问过几次,但我认为我的问题有点棘手。

我有一张桌子(tbl_settings):

setting_id   |    token   |   setting_value   |   setting_for
1                 1           on                  background
2                 1           off                 vibrate
3                 2           on                  vibrate

这适用于移动应用,我会将用户设置保存在远程数据库中,以便以后可以根据需要进行检索。

Setting_id是唯一且自动增量。

令牌将成为设备令牌ID(特定于用户)

Setting_value是该特定设置的值(开/关)

Setting_for是实际设置的名称

现在有4个可供用户使用的设置选项,可以在个别时间(当用户更改设置打开/关闭时)写入数据库,或者如果更好的话,可以一起写入数据库。

因此,如果用户更改振动设置,我需要一个查询来检查振动和令牌是否存在更新特定记录,否则插入令牌,setting_value和setting_for。

希望它可以在单个查询中使用。如果不是,我将只使用多个查询,一个用于检查是否存在,另一个用于插入或更新。

1 个答案:

答案 0 :(得分:0)

MySQL为此提供了两个选项:

请注意,在这两种情况下,您都必须删除setting_id(无论如何这似乎毫无意义)并使用复合主键。